C++socket编程

来源:互联网 发布:java软件编程招聘 编辑:程序博客网 时间:2024/05/16 11:02

clientSocket

#include <WINSOCK2.H>#include <stdio.h>#pragma comment(lib,"ws2_32.lib")void main(){int err;WORD versionRequired;WSADATA wsaData;versionRequired=MAKEWORD(1,1);err=WSAStartup(versionRequired,&wsaData);//协议库的版本信息if (!err){printf("客户端嵌套字已经打开!\n");}else{printf("客户端的嵌套字打开失败!\n");return;//结束}SOCKET clientSocket=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN clientsock_in;clientsock_in.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");clientsock_in.sin_family=AF_INET;clientsock_in.sin_port=htons(6000);//bind(clientSocket,(SOCKADDR*)&clientsock_in,strlen(SOCKADDR));//注意第三个参数//listen(clientSocket,5);connect(clientSocket,(SOCKADDR*)&clientsock_in,sizeof(SOCKADDR));//开始连接char receiveBuf[100];recv(clientSocket,receiveBuf,101,0);printf("%s\n",receiveBuf);send(clientSocket,"hello,this is client",strlen("hello,this is client")+1,0);closesocket(clientSocket);WSACleanup();}

serverSocket

#include "winsock2.h"#include "stdio.h"#pragma comment(lib,"ws2_32.lib")void main(){WORD myVersionRequest;WSADATA wsaData;myVersionRequest = MAKEWORD(1,1);int err;err = WSAStartup(myVersionRequest,&wsaData);if(!err){printf("已打开套接字\n");}else{printf("未打开套接字");return;}SOCKET serSocket = socket(AF_INET,SOCK_STREAM,0);//创建可识别的套接字SOCKADDR_IN addr;addr.sin_family = AF_INET;addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//ip地址addr.sin_port = htons(6000);//绑定端口bind(serSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR));//绑定完成listen(serSocket,5);//第二个参数是最大的连接数SOCKADDR_IN clientSocket;int len = sizeof(SOCKADDR);while(1){SOCKET serConn = accept(serSocket,(SOCKADDR*)&clientSocket,&len);char sendBuf[100];sprintf(sendBuf,"welcome %s to shanghai",inet_ntoa(clientSocket.sin_addr));send(serConn,sendBuf,strlen(sendBuf)+1,0);char receiveBuf[100];recv(serConn,receiveBuf,strlen(receiveBuf)+1,0);printf("%s\n",receiveBuf);closesocket(serConn);WSACleanup();}}


0 0