您的位置:首页 > 理论基础 > 计算机网络

win32网络编程实例——同步IO

2016-11-07 13:18 381 查看
服务器端代码:

<span style="font-size:12px;">#include <winsock2.h>
#include <stdio.h>
#pragma  comment(lib, "wsock32.lib")
int main()
{
int iResults;
WSADATA wsaData;
SOCKET listenSocket;
SOCKET acceptSocket;
struct sockaddr_in serverAddr;
char recvbuf[1024] ={0};

iResults = WSAStartup(MAKEWORD(2,2),&wsaData);
if(iResults != NO_ERROR)
{
printf("WSAStartup error:%d\n",iResults);
WSACleanup();
return -1;
}
listenSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(listenSocket == INVALID_SOCKET)
{
printf("socket error:%d\n",WSAGetLastError());
WSACleanup();;
closesocket(listenSocket);
return -1;
}

serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(27015);
iResults = bind(listenSocket,(SOCKADDR *)&serverAddr,sizeof(serverAddr));
if(iResults == SOCKET_ERROR)
{
printf("bind error:%d\n",WSAGetLastError());
WSACleanup();
closesocket(listenSocket);
return -1;
}
iResults = listen(listenSocket,SOMAXCONN );
if(iResults == SOCKET_ERROR)
{
printf("listen error:%d\n",WSAGetLastError());
WSACleanup();
closesocket(listenSocket);
return -1;
}

acceptSocket = accept(listenSocket,NULL,NULL);
if(acceptSocket == INVALID_SOCKET)
{
printf("accept error:%d\n",WSAGetLastError());
WSACleanup();
closesocket(listenSocket);
closesocket(acceptSocket);
return -1;
}
printf("connect is establisted!\n");
do{
iResults = recv(acceptSocket,recvbuf,sizeof(recvbuf),0);
if(iResults > 0)
printf("recv num is %d, recvbuf is %s\n",iResults,recvbuf);
else if(iResults == 0)
printf("Connection closed\n");
else
printf("recv error:%d\n",WSAGetLastError());

}while(iResults < 0);
closesocket(listenSocket);
WSACleanup();
return 0;
}
</span>

客户端代码:

<span style="font-size:12px;">#include <winsock2.h>
#include <stdio.h>
#pragma  comment(lib, "wsock32.lib")
int main()
{
int iResults;
unsigned int numSend;
unsigned int pSend;
WSADATA wsaData;
SOCKET connectSocket;
struct sockaddr_in serverAddr;
char sendbuf[1024] = "HelloWorld!";

iResults = WSAStartup(MAKEWORD(2,2),&wsaData);
if(iResults != NO_ERROR)
{
printf("WSAStartup error:%d\n",iResults);
WSACleanup();
return -1;
}
connectSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(connectSocket == INVALID_SOCKET)
{
printf("socket error:%d\n",WSAGetLastError());
WSACleanup();
closesocket(connectSocket);
return -1;
}

serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(27015);

iResults = connect(connectSocket,(SOCKADDR *)&serverAddr,sizeof(serverAddr));
if(iResults == SOCKET_ERROR)
{
printf("connect error:%d\n",WSAGetLastError());
WSACleanup();
closesocket(connectSocket);
return -1;
}

numSend = 0;
pSend = 0;
do{
numSend = send(connectSocket ,sendbuf + pSend ,strlen(sendbuf) - pSend ,0);
if(numSend == SOCKET_ERROR)
{
printf("send error:%d\n",WSAGetLastError());
WSACleanup();
}
pSend = pSend + numSend;
}while(pSend < (int)strlen(sendbuf));//not <=

closesocket(connectSocket);
WSACleanup();
return 0;
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: