windows c语言tcp,windows下简单的C语言服务器(TCP)

回顾下windows下网络方面的东西 首先写了下C语言的socket

--查看本机IP:ipconfig/all

---C语言实现

---visual studio 2012

Server:

#include

#include

#pragma comment(lib,"ws2_32.lib")

int main(void)

{

//初始化wsa

WORD sockVision = MAKEWORD(2,2);

WSADATA wsadata;

//其他变量

SOCKET slisten;

SOCKET sClient;

struct sockaddr_in remoteAddr;

struct sockaddr_in sin;

int ret = -1;

int nAddrlen = sizeof(remoteAddr);

char revdata[255];

char senddata[255];

if( WSAStartup(sockVision,&wsadata) != 0 )

{

printf("WSA初始化失败\n");

return 0;

}

//创建套接字

slisten = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if(slisten == INVALID_SOCKET)

{

printf("socket监听者创建失败\n");

return 0;

}

//绑定IP和端口

sin.sin_family = AF_INET;

sin.sin_port = htons(8888);

sin.sin_addr.S_un.S_addr = INADDR_ANY;

if( bind(slisten,(LPSOCKADDR)&sin,sizeof(sin)) == SOCKET_ERROR )

{

printf("绑定IP和端口\n");

return 0;

}

//监听

if(listen(slisten,5) == SOCKET_ERROR)

{

printf("监听失败\n");

return 0;

}

//循环接收数据

while(1)

{

printf("等待连接.........\n");

sClient = accept(slisten,(SOCKADDR *)&remoteAddr,&nAddrlen);

if(sClient == INVALID_SOCKET)

{

printf("接受客户端失败,正在重试.........\n");

continue;

}

printf("接受客户端成功:%s\n",inet_ntoa(remoteAddr.sin_addr));

//接收数据

while(1)

{

ret = recv(sClient,revdata,255,0);

if(ret > 0)

{

revdata[ret] = 0x00;

printf("\n");

printf("客户:");

printf(revdata);

printf("\n");

}

if(strcmp(revdata,"bye") == 0)

break;

//发送数据

printf("我:");

scanf("%s",senddata);

send(sClient,senddata,strlen(senddata),0);

}

closesocket(sClient);

}

closesocket(sClient);

WSACleanup();

return 0;

}

Client:

#include

#include

#pragma comment(lib,"ws2_32.lib")

int main(void)

{

WORD sockVision = MAKEWORD(2,2);

WSADATA wsadata;

SOCKET sclient ;

struct sockaddr_in serAddr;

char senddata[255];

char revdata[255];

int ret = -1;

if(WSAStartup(sockVision,&wsadata) != 0)

{

printf("WSA初始化失败\n");

return 0;

}

sclient = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if(sclient == INVALID_SOCKET)

{

printf("socket客户端创建失败\n");

return 0;

}

serAddr.sin_family = AF_INET;

serAddr.sin_port = htons(8888);

serAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.224");

if( connect(sclient,(SOCKADDR *)&serAddr,sizeof(serAddr)) == SOCKET_ERROR )

{

printf("socket客户端连接失败\n");

return 0;

}

while(1)

{

printf("我:");

scanf("%s",senddata);

send(sclient,senddata,strlen(senddata),0);

if(strcmp(senddata,"bye") == 0)

break;

ret = recv(sclient,revdata,255,0);

if(ret > 0)

{

revdata[ret] = 0x00;

printf("\n");

printf("服务器:");

printf(revdata);

printf("\n");

}

}

closesocket(sclient);

WSACleanup();

system("pause");

return 0;

}