返回信息流程序是要实现这样的一个功能:客户端给服务器端发一个字符串,服务器端接收字符串,并在屏幕上打印出该字符串,接收成功商,向客户端发送接收成功,并且把该字符串打印出来。
客户端的代码如下:
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
希望看到的帮忙解决一下,谢谢了。(程序事关重大,明天就要交了)
这是一条镜像帖。来源:北邮人论坛 / cpp / #41328同步于 2010/7/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
跪求大牛,求教一个关于socket编程的问题(急)
laofeng
2010/7/14镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
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);
就这样