首先,windows下socket编程流程已经非常明白了,服务端:WSAstarup→socket→bind→listen→(recv/send)→closesocket→WSAcleanup;客户端:WSAstarup→socket→connect→(recv/send)→closesocket→WSAcleanup。
代码贴出如下:
服务端:
/* 简单 socket TCP 服务端示例代码
2014年5月3日22:19:14
*/
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
#include <stdio.h>
#include <memory.h>
void main()
{
WORD wSocketVersion;
WSADATA wsaData;
wSocketVersion = MAKEWORD(2,2);
if( WSAStartup(wSocketVersion, &wsaData) != 0 )
{
printf("Initial Failed!\n");
return;
}
SOCKET server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if( INVALID_SOCKET == server )
{
printf("socket Failed\n");
return;
}
sockaddr_in svraddr;
svraddr.sin_family = AF_INET;
svraddr.sin_port = htons( 6400);
svraddr.sin_addr.S_un.S_addr = INADDR_ANY;
if( SOCKET_ERROR == bind(server, (sockaddr*)&svraddr, sizeof(svraddr)) )
{
closesocket(server);
printf("bind Error!\n");
return;
}
if( SOCKET_ERROR == listen(server, 5) )
{
closesocket(server);
printf("listen() Error!\n");
return;
}
sockaddr_in conaddr;
int len = sizeof(sockaddr_in);
SOCKET sockCon;
printf("Wait Connect!\n");
while (true)
{
sockCon = accept(server, (sockaddr*)&conaddr, &len);
if( INVALID_SOCKET == sockCon )
{
//printf(