基于 TCP 协议套接字编程
注:在创建套接字过程中需要用到"ws2_32.lib"库,可以手动通过编译器添加也可以在头文
件上添加代码:/#pragma comment(lib,"ws2_32.lib")
1.服务器部分
#include <WinSock2.h>
#include <stdio.h>
//#pragma comment(lib,"ws2_32.lib")
void main()
{
WORD wVersionRequseted;
WSADATA wsaData;
int err;
wVersionRequseted=MAKEWORD(1,1);
err=WSAStartup(wVersionRequseted,&wsaData);
if(err!=0)
{
return;
}
if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1)
{
WSACleanup();
return;
}
SOCKET SockSrv=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//转换为网络字节序
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);//转换为网络字节序
bind(SockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
listen(SockSrv,5);//把等待队列设置为 5
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
while(1)
{
SOCKET sockCon=accept(SockSrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[100];
sprintf(sendBuf,"welcome %s",inet_ntoa(addrClient.sin_addr));
send(sockCon,sendBuf,strlen(sendBuf)+1,0);//这个用于消息发送的套接字
是是新建的套接字而不是上面用于监听的套接字
char recvBuf[100];
recv(sockCon,recvBuf,100,0);
printf("%s",recvBuf);
closesocket(sockCon);
}