导航:首页 > 文件教程 > tcp文件传输代码

tcp文件传输代码

发布时间:2021-10-26 00:09:49

⑴ C++实现TCP文件传输

关键看你是想自己做一套协议,还是直接使用已有的FTP协议来实现了。
FTP是一个标准的文件传输协议,有很多现成的方案可以参考。
当然,如果你只是自己传个特定的文件,那么很简单,自己定义个格式,与服务器保持一致,然后用字节流传输就可以了。

⑵ 下面是一段TCP文件传输的c/c++代码,1,2,3,4句有什么作用谢谢!!

charbuffer[sizeof(long)*2];申请2个双抄字长度的内存,一般是8个字节。
*(DWORD*)buffer=0x100;第一个双字长度的整型数用0x100初始化。
*(DWORD*)(buffer+sizeof(long))=file.GetLength();这里buffer+4(暂且这么认为)就是第二个双字的地址,也就是用file的长度值初始化第二个双字。
pSocket->Send(buffer,sizeof(long)*2,0);将buffer里面的几个字节数据发送出去。

⑶ 用java编写TCP文件传输程序

你的邮箱是多少,发给你

⑷ TCP/IP编程实现远程文件传输

这个嘛很简单在TCP/IP网络结构中,为了保证网络安全,网络人员往往需要在路由器上添加防火墙,禁止非法用户用FTP等安全危害较大的TCP/IP协议访问主机。而有时系统维护人员需要用ftp将一些文件从中心机房主机传到前端网点主机上,比如应用程序的替换升级。如果每次传输文件时都要打开防火墙,未免显得有些繁琐,要是在自己的应用程序中增加一个专门的文件传输模块,那将是十分愉快的事情。

UNIX网络程序设计一般都采用套接字(socket)系统调用。针对目前十分流行的客户/服务器模式,其程序编写步骤如下:
1.Socket系统调用
为了进行网络I/O,服务器和客户机两端的UNIX进程要做的第一件事是调用socket()系统调用,建立软插座,指明合适的通讯协议。格式为:
#include >sys/types.h>
#include >sys/socket.h>
int socket(int family,int type,int protocol)
其中:(1)family指明套节字族,其值包括:
AF_UNIX (UNIX内部协议族)
AF_INET (Iternet协议)
AF_NS (XeroxNs协议,TCP/IP编程取该值)
AF_IMPLINK (IMP链接层)
(2)type 指明套接字类型,取值有:
SOCK_STREAM (流套接字)
SOCK_DGRAM (数据报套接字)
SOCK_RAW (原始套接字)
SOCK_SEQPACKET (定序分组套接字)
一般情况下,前两个参数的组合就可以决定所使用的协议,这时第三个参数被置为0,如果第一个参数为AF_INET,第二个参数选SOCK_STREAM,则使用的协议为TCP;第二个参数选SOCK_DGRAM,则使用的协议为UDP;当第二个参数选SOCK_RAW时,使用的协议为IP。值得指出的是并不是所有的族和类型的组合都是合法的,具体请查阅相关资料。该系统调用若成功则返回一个类似文件描述符,成为套节字描述字,可以像文件描述符那样用read和write对其进行I/O操作。当一个进程使用完该软插座时,需用close(<描述符>)关闭(具体见后面内容)。
2.服务器端Bind系统调用
软插座创建时并没有与任何地址相关联,必须用bind()系统调用为其建立地址联系。其格式为:
#include <sys/types.h>
#include <sys/socket.h>
int bind(int socketfd,strUCt sockaddr_in *localaddr,sizeof(localaddr));
其中:(1)第一个参数socketfd是前步socket()系统调用返回的套节字描述符。
(2)第二个参数被捆向本地地址的一种结构,该结构在sys/netinet/in.h中定义:
struct sockaddr_in{
short sin_family;/*socket()系统调用的协议族如AF_INET*/
u_short sin_port;/*网络字节次序形式的端口号码*/
struct in_addr sin_addr;/*网络字节次序形式的网络地址*/
char sin_zero[8];
}
一台机器上的每个网络程序使用一个各自独立的端口号码,例如:telnet程序使用端口号23,而ftp文件传输程序使用端口号21。我们在设计应用程序时,端口号码可以由getservbyname()函数从/etc/services库文件中获取,也可以由htons (int portnum)函数将任意正整数转换为网络字节次序形式来得到,有些版本的UNIX操作系统则规定1024以下的端口号码只可被超级用户使用,普通用户程序使用的端口号码只限于1025到32767之间。网络地址可以由gethostbyname(char*hostname)函数得到(该函数和getservbyname()一样都以网络字节次序形式返回所有在他们结构中的数据),参数hostname为/etc/hosts文件中某一网络地址所对应的机器名。该函数返回一个类型为hostent的结构指针,hostent结构在netdb.h中定义:
struct hostent{
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;/*地址长度*/
char **h_addr_list; #define h_addr h_addr_list[0];/*地址*/
}
(3)第三个参数为第二个结构参数的长度,如果调用成功,bind返回0,否则将返回-1并设置errno。
3.服务器端系统调用listen,使服务器愿意接受连接
格式:int listen(int socketfd,int backlong)
它通常在socket和bind调用后在accept调用前执行。第二个参数指明在等待服务器执行accept调用时系统可以排队多少个连接要求。此参数常指定为5,也是目前允许的最大值。
4.服务器调用accept,以等待客户机调用connect进行连接。格式如下:
int newsocket=(int socketfd,struct sockaddr_in *peer,int*addrlen);
该调用取得队列上的第一个连接请求并建立一个具有与sockfd相同特性的套节字。如果没有等待的连接请求,此调用阻塞调用者直到一连接请求到达。连接成功后,该调用将用对端的地址结构和地址长度填充参数peer和addlen,如果对客户端的地址信息不感兴趣,这两个参数用0代替。
5.客户端调用connect()与服务器建立连接。格式为:
connect(int socketfd,struct sockaddr_in *servsddr,int addrlen)
客户端取得套接字描述符后,用该调用建立与服务器的连接,参数socketfd为socket()系统调用返回的套节字描述符,第二和第三个参数是指向目的地址的结构及以字节计量的目的地址的长度(这里目的地址应为服务器地址)。调用成功返回0,否则将返回-1并设置errno。
6.通过软插座发送数据
一旦建立连接,就可以用系统调用read和write像普通文件那样向网络上发送和接受数据。Read接受三个参数:一个是套节字描述符;一个为数据将被填入的缓冲区,还有一个整数指明要读的字节数,它返回实际读入的字节数,出错时返回-1,遇到文件尾则返回0。Write也接受三个参数:一个是套节字描述符;一个为指向需要发送数据的缓冲区,还有一个整数指明要写入文件的字节个数,它返回实际写入的字节数,出错时返回-1。当然,也可以调用send和recv来对套节字进行读写,其调用与基本的read和write系统调用相似,只是多了一个发送方式参数。
7.退出程序时,应按正常方式关闭套节字。格式如下:
int close(socketfd)
前面介绍了UNIX客户/服务器模式网络编程的基本思路和步骤。值得指出的是socket编程所涉及的系统调用不属于基本系统调用范围,其函数原形在libsocket.a文件中,因此,在用cc命令对原程序进行编译时需要带-lsocket选项。

⑸ 用TCP应用编程实现文件传输怎么编程序

客户端用TCPClient或Socket类建立连接,将要传送的数据或文件序列化成byte[],用TCPClient或Socket类的Send方法发送。

服务端用TCPListener或Socket类建立侦听,用Receive方法接收数据流至byte[],将byte[]反序列化成需要的文件或数据格式。

上面是同步传输的方法,异步方法稍微繁琐,不太适合初学者。

⑹ 急急急!!!!本人菜鸟 !Socket 编程实现TCP 文件传输。MFC。

1:你定义的是ListenSocket和SendSocket,而代码中是listenSocket和sendSocket,VC或者VS是对大小写敏感的,二者是不同的标识符,必然版会提示你二者没权有声明。
2:要实现在OnAccept()中调用ServerDlg类中的SendSocket,必须在CMySocket类中定义一个ServerDlg类的对象作为其成员变量,如ServerDlg *m_pDlg;这样在OnAccept()就可以用通过
"m_pDlg->"的方式调用ServerDlg类的成员函数了

⑺ C语言编写TCP的文件传输

粗略看了一下,你是用户的是TCP不是UDP,注意一点TCP可靠安全但是需要你自己手动处理粘包问回题.你要是想学网络编程答,就需要学会分析和定制协议.我建议你先去看看TFTP的网络协议.所谓的通信就是我发请求给你,你给我应答(请求成功还是失败).你刚学网络编程,直接是使用tcp不是很合适,你可以去看看TFTP的协议(向服务器请求下载或者上传文件).复杂一点的程序一搬都需要定制网络协议,tcp则还需要处理粘包问题.如果你想学,可以和我联系,我可以发你资料→_→

⑻ 基于TCP/IP协议的文件传输命令是

如果你的题目没有问题,那么可选的是a和b,这是两个命令,其中a,估计应该是telnet,而非专
talent,而b是文件传输协议属,用于文件传输。
而c是一种协议,d则是internet
service
provider,例如联通、电信等,当然不可能是命令了。
所以答案是b.

⑼ 基于tcp/ip协议的文件传输命令是()。A Talent B FTP C HTTP D ISP

如果你的题目来没有问题源,那么可选的是A和B,这是两个命令,其中A,估计应该是TELNET,而非
Talent,而B是文件传输协议,用于文件传输。
而C是一种协议,D则是Internet Service Provider,例如联通、电信等,当然不可能是命令了。
所以答案是B.

⑽ 求一段最简单的java的TCP文件传输的代码,多谢了。

就收ServerSocket和Socket的使用,一个监听,一个连接,将文件写入到输出流中,接收端获取输入流,完毕之后关闭连接,监听端自然断开。文件接收完毕,结束。代码原先有,现在找不到了。

阅读全文

与tcp文件传输代码相关的资料

热点内容
教育大数据应用典型示范项目 浏览:934
有什么好的消化内科科普网站 浏览:504
打开网络映射存储为什么特别慢 浏览:157
苹果手机摔弯了还能修吗 浏览:532
华中数控编程怎么换 浏览:874
word2007画图工具在哪里 浏览:565
广播式网络由什么组成 浏览:538
福州老用户升级4g校园套餐 浏览:644
jstr加点击事件 浏览:652
搜狗输入法最老版本下载地址 浏览:145
玛卡编程怎么样 浏览:302
怎么编程伺服器编码 浏览:109
什么是机密文件 浏览:258
网站收录量低应该如何解决 浏览:978
飞跃贷app官网 浏览:337
js正则表达式全为整数 浏览:561
在哪里免费下载大数据 浏览:218
linux怎么做视频网站 浏览:949
安卓舰娘登入不进去 浏览:145
ak47龙鳞升级成什么 浏览:256

友情链接