这里分享一个Winsock版本的简单入门通信程序,包含客户端和服务端
服务端:
#include <winsock2.h>
#include <stdio.h>
#pragma comment (lib,"ws2_32");
int main()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);
SOCKET s=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
sockaddr_in sockaddr;
sockaddr.sin_family=PF_INET;
sockaddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
sockaddr.sin_port=htons(827);
bind(s,(SOCKADDR*)&sockaddr,sizeof(SOCKADDR));
listen(s,1);
SOCKADDR ClientAddr;
int nSize=sizeof(SOCKADDR);
SOCKET clientSock;
clientSock=accept(s,(SOCKADDR*)&ClientAddr,&nSize);
char szRBuffer[MAXBYTE]={0};
char szSBuffer[MAXBYTE]={0};
while(1)
{
recv(clientSock,szRBuffer,MAXBYTE,NULL);
if(strcmp(szRBuffer,"quit")==0)
break;
printf("recieve : %s\n",szRBuffer);
printf("send : ");
scanf("%s",szSBuffer);
send(clientSock,szSBuffer,MAXBYTE,NULL);
}
closesocket(clientSock);
closesocket(s);
WSACleanup();
return 0;
}
客户端:
#include <stdio.h>
#include <winsock2.h>
#pragma comment (lib,"ws2_32")
int main()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);
SOCKET s=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
sockaddr_in sockaddr;
sockaddr.sin_family=PF_INET;
sockaddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
sockaddr.sin_port=htons(827);
connect(s,(SOCKADDR*)&sockaddr,sizeof(SOCKADDR));
char szRBuffer[MAXBYTE]={0};
char szSBuffer[MAXBYTE]={0};
while(1)
{
printf("send:");
scanf("%s",szSBuffer);
send(s,szSBuffer,MAXBYTE,NULL);
if(strcmp(szSBuffer,"quit")==0)
break;
recv(s,szRBuffer,MAXBYTE,NULL);
printf("recieve=%s\r\n",szRBuffer);
}
closesocket(s);
WSACleanup();
return 0;
}