win tcp socket

来源:互联网 发布:贵港市政网络问政平台 编辑:程序博客网 时间:2024/06/08 01:13

1. Server

/* *端口使用一个16位的数字表示,范围0~65535, 1024一下端口保留 *低位先存:起始地址放在低位字节 *高位先存:起始地址放在高位字节 *Intel CPU:地位先存 *TCP/IP使用16位和32位整数的高位先存格式 */#include <WinSock2.h>#include <stdio.h>#pragma comment(lib, "ws2_32.lib")int main(){WSADATA wsaData;if (WSAStartup(MAKEWORD(1,1), &wsaData) != 0)return -1;if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1){WSACleanup();return -1;}SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.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);for(;;){SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);char sendBuf[100];sprintf(sendBuf, "Welcome %s to TcpServer", 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);}WSACleanup();return 0;}


2. Client

#include <WinSock2.h>#include <stdio.h>#pragma comment(lib, "ws2_32.lib")int main(){WSADATA wsaData;if (WSAStartup(MAKEWORD(1, 1), &wsaData)){return -1;}if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1){WSACleanup();return -1;}SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.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 Client", strlen("This is Client")+1, 0);closesocket(sockClient);WSACleanup();return 0;}



0 0