一、打开两个VS2019 , 创建两个控制台程序分别命名为client和servers
二、编写服务端servers
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 , 当确定套接字使用的协议簇和类型时 , 这个参数的值就为0if (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 , 当确定套接字使用的协议簇和类型时 , 这个参数的值就为0if (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);
四、运行结果五、小技巧
【socket传输文件的原理 socket实现文件传输】@err,hr 监视输入这个可以查看错误信息
推荐阅读
- pdf读取软件有哪些 读取pdf文件的软件推荐
- 苹果电脑怎么新建文件夹 怎么办点新建文件夹没新建 成
- 异星探险家氧气传输线用完了怎么办?氧气传输线用完解决方法
- ncm文件怎么改mp3 ncm格式音乐怎么转mp3
- 怎么找到隐藏文件夹 电脑中怎么隐藏文件夹,怎么显示隐藏的文件?
- dcim是什么 DCIM是什么文件可以删除吗
- 教你如何在手机和电脑之间传输文件 手机视频怎么传到电脑上
- 电脑桌面文件夹打不开的解决办法 电脑打不开文件是什么原因
- Word文字技巧另存为快捷键怎么操作 文件另存的快捷键
- Win10系统电脑桌面文件夹打不开的解决办法 电脑打不开任何文件