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

跪求大牛,求教一个关于socket编程的问题(急)

laofeng
2010/7/14镜像同步1 回复
程序是要实现这样的一个功能:客户端给服务器端发一个字符串,服务器端接收字符串,并在屏幕上打印出该字符串,接收成功商,向客户端发送接收成功,并且把该字符串打印出来。 客户端的代码如下: char clubname[128]; cout<<"请输入卖方俱乐部的名称:"; cin>>clubname; ORD wVersionRequested;//A 16-bit unsigned integer WSADATA wsaData; int err; wVersionRequested = MAKEWORD (1,1); err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) { return 0; } if ( LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion) !=1) { WSACleanup(); return 0; } 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); send(sockConn,(char *)clubname,sizeof(char)*128,0); char recvBuf[100]; recv(sockConn,recvBuf,100,0); cout<<recvBuf; closesocket(sockConn); } 服务器端的源代码如下: char clubname[128]; WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(1,1); err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) { return 0; } if (LOBYTE(wsaData.wVersion) != 1 ||HIBYTE(wsaData.wVersion) != 1) { WSACleanup(); return 0; } SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr("118.229.207.185");//本地地址 addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); //端口,据说要大于1024 connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); recv(sockClient,(char*)&clubname,sizeof(char)*128,0); //表示接收数据 cout<<clubname<<endl; send(sockClient,"接收成功",strlen("接收成功")+1,0); //表示发送数据 closesocket(sockClient); WSACleanup(); 结果客户端和服务器端屏幕都刷频了: 客户端: 附件(806.9KB) chenggong.bmp 希望看到的帮忙解决一下,谢谢了。(程序事关重大,明天就要交了)
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
a206206机器人#1 · 2010/7/14
char sendBuf[100]; sprintf(sendBuf,"welcome %s to http:www.sunxin.org", inet_ntoa(addrClient.sin_addr)); //函数将ulong类型成员数据转换为 //客户端ip地址 send(sockConn,sendBuf,strlen(sendBuf)+1,0); char recvBuf[100]; recv(sockConn,recvBuf,100,0); printf("%s\n",recvBuf); 就这样