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

网络编程-TCP服务器端程序和客户端程序

2013-12-23 19:04 357 查看
服务器端

#include <WinSock2.h>

#include <stdio.h>

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

void main()

{

//加载套接字库

WORD vVersionRequested;

WSADATA wsaData;

int err;

vVersionRequested = MAKEWORD(1,1);

err = WSAStartup(vVersionRequested, &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);

SOCKADDR_IN addrClient;

int len = sizeof(SOCKADDR);

while(1)

{

//等待客户请求到来

SOCKET sockConn = accept(sockSrv, (SOCKADDR *)&addrClient, &len);

char sendBuf[100];

sprintf(sendBuf, "Welcome 5s to http://www.snxin.org", inet_ntoa(addrClient.sin_addr));

//发送数据

send(sockConn,sendBuf, strlen(sendBuf)+1, 0);

char recvBuf[100];

//接收数据

recv(sockConn, recvBuf, 100, 0);

//打印接收的数据

printf("%s\n", recvBuf);

//关闭套接字

closesocket(sockConn);

}

}

客户端程序

#include <WinSock2.h>

#include <stdio.h>

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

void main()

{

//加载套接字库

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD(1,1);

err = WSAStartup(wVersionRequested, &wsaData);

if (err != 0)

{

return;

}

if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1)

{

WSACleanup();

return;

}

//创建套接字

SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);

SOCKADDR_IN addrSrv;

addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

addrSrv.sin_family = AF_INET;

addrSrv.sin_port = htons(6000);

//向服务器发出连接请求

connect(sockClient, (SOCKADDR *)&addrSrv, sizeof(SOCKADDR));

//接收数据

char recvBuf[100];

recv(sockClient, recvBuf, 100, 0);

printf("%s\n", recvBuf);

//发送数据

send(sockClient, "this is lisi", strlen("this is lisi")+1, 0);

//关闭套接字

closesocket(sockClient);

WSACleanup();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐