基于TCP/IP协议的socket编程

来源:互联网 发布:无创dna数据看性别图 编辑:程序博客网 时间:2024/05/09 20:31

=============================================================================

开发环境:windows

开发工具:VC6.0

注意:由于我们使用的socket编程要使用到ws2_32.lib这个动态库,所以在我们编译之前要加上该动态库的连接

=====================================================================


服务器端的代码:

#include <Winsock2.h>#include <stdio.h>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 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 %s to http://www.xxx.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>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 sheng", strlen("this is sheng") + 1, 0);closesocket(sockClient);WSACleanup();}


0 0