简单的 C++ SOCKET编程 ---基于TCP/IP协议(转) & 双道通信

来源:互联网 发布:dot.js 转amd 编辑:程序博客网 时间:2024/06/06 17:46
server端:  #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);//如果这里不是accept而是conection的话。。就会不断的监听  char sendBuf[100];     sprintf(sendBuf,"welcome %s to bejing",inet_ntoa(clientsocket.sin_addr));//找对对应的IP并且将这行字打印到那里  send(serConn,sendBuf,strlen(sendBuf)+1,0);  char receiveBuf[100];//接收  recv(serConn,receiveBuf,strlen(receiveBuf)+1,0);  printf("%s\n",receiveBuf);  closesocket(serConn);//关闭 WSACleanup();//释放资源的操作 }}      client端:   #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();}

双道通信:
 
昨天刚写了个单向的,仅是雏形,还要修改,仅供参考/****************************************************************************//* client.cpp By chostrider *//* http://hi.baidu.com/chostrider/*/#include <winsock2.h>#include <stdio.h>#include <string>#include <iostream>using namespace std;int main(){WSADATA wsa;SOCKET sockFD;char Buff[1024],*sBO;string str="Welcome!!!";WSAStartup(MAKEWORD(2,2),&wsa);sockFD = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);struct sockaddr_in server;server.sin_family = AF_INET;server.sin_port = htons(3764);server.sin_addr.s_addr=inet_addr("127.0.0.1");connect(sockFD,(struct sockaddr *)&server,sizeof(server));//strcpy(sBO,"Welcome!!!");strcpy(Buff,str.c_str());sBO = Buff;send(sockFD,sBO,20,0);while(cin>>str){ strcpy(Buff,str.c_str()); sBO = Buff; send(sockFD,sBO,20,0);}closesocket(sockFD);WSACleanup();return 1;}/****************************************************************************//****************************************************************************//* server.cpp By chostrider *//* http://hi.baidu.com/chostrider/*/#include <winsock2.h>#include <stdio.h>char Buff[1024];int main(){WSADATA wsa;SOCKET listenFD;int ret;WSAStartup(MAKEWORD(2,2),&wsa);listenFD = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);struct sockaddr_in server;server.sin_family = AF_INET;server.sin_port = htons(3764);server.sin_addr.s_addr=ADDR_ANY;ret=bind(listenFD,(sockaddr *)&server,sizeof(server));ret=listen(listenFD,2);int iAddrSize = sizeof(server);SOCKET clientFD=accept(listenFD,(sockaddr *)&server,&iAddrSize);unsigned long lBytesRead;while(1) {lBytesRead=recv(clientFD,Buff,1024,0);if(lBytesRead<=0) break;printf("receive %d bytes\n",lBytesRead);printf(Buff);printf("\n");ret=send(clientFD,Buff,lBytesRead,0);if(ret<=0) break;}WSACleanup();return 0;}/****************************************************************************/ 编译后先运行是s.exe,再运行c.exe,在c.exe中输入可在s.exe中显出

 
 
 
 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝吐奶又拉稀怎么办 羊水穿刺21三体怎么办 开始长妊娠纹了怎么办 已经长了妊娠纹怎么办 孕晚期长妊娠纹怎么办 妊娠纹长出来了怎么办 没提前预约四维怎么办 ct检查冠脉钙化怎么办 残角子宫有内膜怎么办 怀孕了长痔疮了怎么办 人流后子宫内膜薄怎么办 多囊子宫内膜薄怎么办 6岁儿童不爱睡觉怎么办 初生儿嗓子哑了怎么办 6岁儿童睡眠不好怎么办 8岁儿童睡眠不好怎么办 1个月婴儿睡眠少怎么办 三岁宝宝心跳快怎么办 宝宝右心房稍大怎么办 胎儿右心房偏大怎么办 胎心监测波动小怎么办 怀孕6个月不想要了怎么办 高敏肌钙蛋白t高怎么办 龟头沟槽里长疙瘩怎么办 肝郁气滞的体质怎么办 手指甲长在肉里怎么办 甲床与指甲脱离怎么办 指甲往肉里面长怎么办 指甲和肉分离是怎么办 大脚趾指甲空了怎么办 脚趾甲长在肉里怎么办 脚趾甲又厚又硬怎么办 小孩子咳嗽有痰怎么办%3f 支气扩张咳血怎么办小 背部第8块脊椎疼怎么办 坐时间长了背疼怎么办 新生儿总哭怎么办吐奶 婴儿吃饱了还哭怎么办 宝宝喉咙哭哑了怎么办 婴儿哭哑了嗓子怎么办 婴儿胖子哭哑了怎么办