BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #73500同步于 2013/8/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

求大神指点socket

zhangliyuan
2013/8/29镜像同步4 回复
Server: #include <stdio.h>#include <stdlib.h>#include <winsock2.h>#include <time.h>#include <string>#include <iostream>#include <fstream>#include <iomanip>using namespace std;#pragma comment(lib,"Ws2_32.lib") int main(int argc,char ** argv) { WSADATA wsaData; char recvbuf[100]; int iRecv,Lenclient; SOCKADDR_IN serverName, clientName; SOCKET socketServer; char ipadd[16]; strcpy(ipadd,"127.0.0.1"); WSAStartup(MAKEWORD(2,2), &wsaData); //初始化ws2_32.dll动态链接库 socketServer = socket(AF_INET, SOCK_DGRAM, 0); serverName.sin_family = AF_INET; serverName.sin_port = htons(6666); serverName.sin_addr.s_addr = inet_addr(ipadd); bind(socketServer, (SOCKADDR*)&serverName, sizeof(serverName)); memset(recvbuf,0,sizeof(100)); while(1) { printf("In\n"); Lenclient = sizeof(serverName); iRecv = recvfrom(socketServer, recvbuf, sizeof(recvbuf), 0, (SOCKADDR*)&serverName, &Lenclient); if (iRecv != SOCKET_ERROR) { printf("%s\n",recvbuf); memset(recvbuf,0,sizeof(100)); } } return 0;} Client: #include <stdio.h>#include <stdlib.h>#include <winsock2.h>#include <time.h>#include <string>#include <iostream>#include <fstream>#include <iomanip>using namespace std;#pragma comment(lib,"Ws2_32.lib") int main(int argc,char ** argv) { WSADATA wsaData; char sendbuf[100]; int iSend,Lenclient; char ipadd[16]; strcpy(ipadd,"10.110.5.182"); SOCKADDR_IN clientName; SOCKET socketClient; WSAStartup(MAKEWORD(2,2), &wsaData); //初始化ws2_32.dll动态链接库 socketClient = socket(AF_INET, SOCK_DGRAM, 0); clientName.sin_family = AF_INET; clientName.sin_port = htons(6666); clientName.sin_addr.s_addr = inet_addr(ipadd); bind(socketClient, (SOCKADDR*)&clientName, sizeof(clientName)); memset(sendbuf,0,sizeof(100)); while(1) { gets(sendbuf); printf("本次要发送数据是:%s\n",sendbuf); iSend = sendto(socketClient, sendbuf, sizeof(sendbuf), 0, (SOCKADDR*)&clientName, sizeof(clientName)); if (iSend != SOCKET_ERROR) { printf("本次发送数据成功:%s\n",sendbuf); memset(sendbuf,0,sizeof(100)); } else { cout<<WSAGetLastError()<<endl; } } return 0;}
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
zhangliyuan机器人#1 · 2013/8/29
【 在 zhangliyuan 的大作中提到: 】 : Server: : #include <stdio.h>#include <stdlib.h>#include <winsock2.h>#include <time.h>#include <string>#include <iostream>#include <fstream>#include <iomanip>using namespace std;#pragma comment(lib,"Ws2_32.lib") : int main(int argc,char ** argv) { WSADATA wsaData; : ................... 重新发: Server: #include <stdio.h> #include <stdlib.h> #include <winsock2.h> #include <time.h> #include <string> #include <iostream> #include <fstream> #include <iomanip> using namespace std; #pragma comment(lib,"Ws2_32.lib") int main(int argc,char ** argv) { WSADATA wsaData; char recvbuf[100]; int iRecv,Lenclient; SOCKADDR_IN serverName, clientName; SOCKET socketServer; char ipadd[16]; strcpy(ipadd,"127.0.0.1"); WSAStartup(MAKEWORD(2,2), &wsaData); //初始化ws2_32.dll动态链接库 socketServer = socket(AF_INET, SOCK_DGRAM, 0); serverName.sin_family = AF_INET; serverName.sin_port = htons(6666); serverName.sin_addr.s_addr = inet_addr(ipadd); bind(socketServer, (SOCKADDR*)&serverName, sizeof(serverName)); memset(recvbuf,0,sizeof(100)); while(1) { printf("In\n"); Lenclient = sizeof(serverName); iRecv = recvfrom(socketServer, recvbuf, sizeof(recvbuf), 0, (SOCKADDR*)&serverName, &Lenclient); if (iRecv != SOCKET_ERROR) { printf("%s\n",recvbuf); memset(recvbuf,0,sizeof(100)); } } return 0; } Client: #include <stdio.h> #include <stdlib.h> #include <winsock2.h> #include <time.h> #include <string> #include <iostream> #include <fstream> #include <iomanip> using namespace std; #pragma comment(lib,"Ws2_32.lib") int main(int argc,char ** argv) { WSADATA wsaData; char sendbuf[100]; int iSend,Lenclient; char ipadd[16]; strcpy(ipadd,"10.110.5.182"); SOCKADDR_IN clientName; SOCKET socketClient; WSAStartup(MAKEWORD(2,2), &wsaData); //初始化ws2_32.dll动态链接库 socketClient = socket(AF_INET, SOCK_DGRAM, 0); clientName.sin_family = AF_INET; clientName.sin_port = htons(6666); clientName.sin_addr.s_addr = inet_addr(ipadd); bind(socketClient, (SOCKADDR*)&clientName, sizeof(clientName)); memset(sendbuf,0,sizeof(100)); while(1) { gets(sendbuf); printf("本次要发送数据是:%s\n",sendbuf); iSend = sendto(socketClient, sendbuf, sizeof(sendbuf), 0, (SOCKADDR*)&clientName, sizeof(clientName)); if (iSend != SOCKET_ERROR) { printf("本次发送数据成功:%s\n",sendbuf); memset(sendbuf,0,sizeof(100)); } else { cout<<WSAGetLastError()<<endl; } } return 0; }
zhangliyuan机器人#2 · 2013/8/29
【 在 zhangliyuan 的大作中提到: 】 : : 重新发: : Server: : ................... 我的ip是10.110.5.182
yangnick机器人#3 · 2013/8/29
服务器端不用指明ip吧,单机测试的话,客户端应该连接127.0.0.1。 【 在 zhangliyuan 的大作中提到: 】 : : 我的ip是10.110.5.182
zhangliyuan机器人#4 · 2013/8/29
【 在 yangnick 的大作中提到: 】 : 服务器端不用指明ip吧,单机测试的话,客户端应该连接127.0.0.1。 你的意思是服务器端的socket不用和一组ip端口绑定?大神?