欢迎分享,转载请注明来源:内存溢出
socket传输文件的原理_socket实现文件传输
一、打开两个VS2019,创建两个控制台程序分别命名为client和servers二、编写服务端servers1、包含头文件及库文件#include <WinSock2.h>#pragma comment(lib,"ws2_32.lib")#pragma warning(disable:4996)2、初始化及反初始化代码,记下来就行,永远不变//初始化代码,死记下来就行 WORD wVersion = MAKEWORD(2, 2); WSADATA wsadata; if (WSAStartup(wVersion, &wsadata) != 0) { return 0; } //反初始化 *** 作 WSACleanup();3、创建socketSOCKET s= socket(AF_INET, SOCK_STREAM, 0); //第一个参数协议簇(AF_INET,ipv4;AF_INET6,ipv6;AF_UNIX,本机通信) //第二个参数类型(SOCK_STREAM,TCP流;SOCK_DGRAM,UDP数据报;SOCK_RAW,原始套接字) //第三个参数一般设置0,当确定套接字使用的协议簇和类型时,这个参数的值就为0 if (s==INVALID_SOCKET) { return 0;//创建套接字失败 }4、绑定端口并开启监听sockaddr_in add; int len = sizeof(sockaddr_in); add.sin_family = AF_INET;//协议簇 add.sin_addr.S_un.S_addr = inet_addr("0.0.0.0");//表示接受任意ip地址 add.sin_port = htons(11111);//网络字节序是大尾方式,本地字节序是小尾方式,需要转换 int i = bind(s, (sockaddr*)&add, len); listen(s, 5);//瞬间来五个用户5、等待客户端连接sockaddr_in caddr; caddr.sin_family = AF_INET; int caddrlen = sizeof(sockaddr_in); SOCKET sclient=accept(s,(sockaddr*)&caddr, &caddrlen);//重新产生一个socket用来通信 if (sclient==INVALID_SOCKET) { return 0; }6、发送数据并关闭连接int ret = send(sclient, "哎呦", strlen("哎呦"), 0); closesocket(sclient);三、编写客户端1、包含头文件及库文件#include <WinSock2.h>#pragma comment(lib,"ws2_32.lib")#pragma warning(disable:4996)2、初始化及反初始化代码,记下来就行,永远不变//初始化代码,死记下来就行 WORD wVersion = MAKEWORD(2, 2); WSADATA wsadata; if (WSAStartup(wVersion, &wsadata) != 0) { return 0; } //反初始化 *** 作 WSACleanup();3、创建socketSOCKET s= socket(AF_INET, SOCK_STREAM, 0); //第一个参数协议簇(AF_INET,ipv4;AF_INET6,ipv6;AF_UNIX,本机通信) //第二个参数类型(SOCK_STREAM,TCP流;SOCK_DGRAM,UDP数据报;SOCK_RAW,原始套接字) //第三个参数一般设置0,当确定套接字使用的协议簇和类型时,这个参数的值就为0 if (s==INVALID_SOCKET) { return 0;//创建套接字失败 }sockaddr_in add; int len = sizeof(sockaddr_in); add.sin_family = AF_INET;//协议簇 add.sin_addr.S_un.S_addr = inet_addr("192.168.1.107");//主动连接该ip地址 add.sin_port = htons(11111);//网络字节序是大尾方式,本地字节序是小尾方式,需要转换4、连接服务器int i = connect(s, (sockaddr*)&add, len); if (SOCKET_ERROR==i) { return 0; }5、接收服务器发送的数据并关闭连接char sbuf[256] = { 0 }; int ret = recv(s, sbuf, 256, 0); if (ret==0) { return 0;//连接断开 } else if(ret>0) { printf(sbuf); } closesocket(s);四、运行结果五、小技巧@err,hr 监视输入这个可以查看错误信息
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
手机ip怎么改地址_工作室防封号换ip方法
上一篇
2022-04-19
射击类端游排行榜_好玩的射击游戏端游
下一篇
2022-04-19
评论列表(0条)