Socket编程 TCP发送能不能循环调用send()方法
本帖最后由 internet91 于 2012-12-12 21:47:40 编辑 我调用send()方法,循环调用20次,但服务器只收到一条。如果循环调用10次,则服务器还能收到8到9条,但也不全。请指教如何处理。谢谢!
//第2步:初始化套接口
SOCKET localSendSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP );
if ( localSendSocket == INVALID_SOCKET ) {
printf("error at socket().\n");
return 1;
}
//第3步:绑定本地端口,不绑定也可以,端口会自动分配
sockaddr_in localaddr;
memset(&localaddr, 0, sizeof(localaddr));//全设置成0
localaddr.sin_family = AF_INET;
localaddr.sin_addr.s_addr = htonl(INADDR_ANY);
localaddr.sin_port = htons(5657);
int localaddrSize = sizeof(localaddr);
if(bind( localSendSocket, (sockaddr *)&localaddr, sizeof(struct sockaddr))!=0 ) {
printf("不能绑定端口!\n");//初始化失败返回-1
return -1;
}
//第4步:构造远程socket地址数据结构
sockaddr_in remoteaddr;
memset(&remoteaddr, 0, sizeof(remoteaddr));//全设置成0
remoteaddr.sin_family = AF_INET;
remoteaddr.sin_addr.s_addr = inet_addr( toHostIp );
remoteaddr.sin_port = htons( toHostPort );
if ( connect(localSendSocket, (SOCKADDR*)&remoteaddr, sizeof(struct sockaddr)) == SOCKET_ERROR ) {
AfxMessageBox("connect to server failed.");
}
//此处循环发送20次,但服务器只收到一条数据,不知道怎么处理。
for (int i=0; i<20; i++) {
char* buf = "this is data send to the server!\r\n";
int sendResult = send(localSendSocket, buf, (int)strlen(buf), 0 );
}
//第6步:关闭套接口
closesocket(localSendSocket);
[解决办法]
可以,但你得确定send成功了,可以拿这里有socket例子测试:
http://download.csdn.net/detail/geoff08zhang/4571358
[解决办法]
并不是客户端调用一次send(),服务器的recv()就会收到一次数据.也可能是多次send的数据一次收到.
[解决办法]
服务器端是循环接收消息的吗,还是只接收一条消息
[解决办法]