欢迎大家来到IT世界,在知识的湖畔探索吧!
一、打开两个VS2019,创建两个控制台程序分别命名为client和servers
二、编写服务端servers
1、包含头文件及库文件
#include <WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
#pragma warning(disable:4996)
欢迎大家来到IT世界,在知识的湖畔探索吧!
2、初始化及反初始化代码,记下来就行,永远不变
欢迎大家来到IT世界,在知识的湖畔探索吧!//初始化代码,死记下来就行
WORD wVersion = MAKEWORD(2, 2);
WSADATA wsadata;
if (WSAStartup(wVersion, &wsadata) != 0)
{
return 0;
}
//反初始化操作
WSACleanup();
3、创建socket
SOCKET 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、绑定端口并开启监听
欢迎大家来到IT世界,在知识的湖畔探索吧!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、创建socket
SOCKET 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 监视输入这个可以查看错误信息
欢迎关注公众号:编程有你
欢迎关注视频号:之乎者也吧
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/22989.html