TCP服务端
1 #include <WinSock2.h> //包含头文件 2 #include <stdio.h> 3 #include <Windows.h> 4 #include <iostream> 5 #pragma comment(lib,"WS2_32.lib") //显示连接套接字库 6 int main() //主函数开始 7 { 8 WSADATA data; //定义WSADATA结构体对象 9 WORD w=MAKEWORD(2,0); //定义版本号码 10 char sztext[]="欢迎你\r\n"; //定义并初始化发送到客户端的字符数组 11 WSAStartup(w,&data); //初始化套接字库 12 SOCKET s,s1; //定义连接套接字和数据收发套接字句柄 13 s=socket(AF_INET,SOCK_STREAM,0); //创建TCP套接字 14 sockaddr_in addr,addr2; //定义套接字地址结构 15 int n=sizeof(addr2); //获取套接字地址结构大小 16 addr.sin_family=AF_INET; //初始化地址结构 17 addr.sin_port=htons(75); 18 addr.sin_addr.S_un.S_addr=INADDR_ANY; 19 bind(s,(sockaddr*)&addr,sizeof(addr)); //绑定套接字 20 listen(s,5); //监听套接字 21 std::cout<<"服务器已经启动\r"<<std::endl; //输出提示信息 22 while(true) 23 { 24 s1=accept(s,(sockaddr*)&addr2,&n); //接受连接申请 25 if (s1!=NULL) 26 { 27 std::cout<<"已经连上\r"<<std::endl<<inet_ntoa(addr2.sin_addr); 28 send(s1,sztext,sizeof(sztext),0); //向客户端发送字符数组 29 } 30 closesocket(s); 31 closesocket(s1); //关闭套接字句柄 32 WSACleanup(); //释放套接字库 33 if (getchar()) //如果有输入,则关闭程序 34 { 35 return 0; //正常关闭程序 36 } 37 else 38 { 39 Sleep(100); //应用睡眠0.1秒 40 } 41 42 } 43 }
运行结果
服务器程序启动后,如果没有客户端向其发送连接请求,则服务器将一直等待知道有客户端程序连接。
TCP客户端
1 #include <WinSock2.h> //包含头文件 2 #include <stdio.h> 3 #include <Windows.h> 4 #include <iostream> 5 #pragma comment(lib,"WS2_32.lib") //显示连接套接字库 6 int main() //主函数开始 7 { 8 WSADATA data; //定义WSADATA结构体对象 9 WORD w=MAKEWORD(2,0); //定义版本号码 10 char sztext[10]={0}; //定义并初始化发送到客户端的字符数组 11 WSAStartup(w,&data); //初始化套接字库 12 SOCKET s; //定义连接套接字和数据收发套接字句柄 13 s=socket(AF_INET,SOCK_STREAM,0); //创建TCP套接字 14 sockaddr_in addr; //定义套接字地址结构 15 addr.sin_family=AF_INET; //初始化地址结构 16 addr.sin_port=htons(75); 17 addr.sin_addr.S_un.S_addr=inet_addr("192.168.7.6"); 18 std::cout<<"客户端已经启动\r"<<std::endl; //输出提示信息 19 connect(s,(sockaddr*)&addr,sizeof(addr)); 20 recv(s,sztext,sizeof(sztext),0); 21 std::cout<<sztext<<std::endl; 22 closesocket(s); //关闭套接字句柄 23 WSACleanup(); //释放套接字库 24 if (getchar()) //如果有输入,则关闭程序 25 { 26 return 0; //正常关闭程序 27 } 28 else 29 { 30 Sleep(100); //应用睡眠0.1秒 31 } 32 33 34 }
编译运行程序,先打开服务端,再打开客户端,那么服务端会接受客户端的请求,客户端也会显示欢迎信息。
时间: 2024-10-11 00:52:35