|
|

楼主 |
发表于 2005-5-19 15:31:02
|
显示全部楼层
确实错了,按你说的接收成功。把程序改了改,接收之后就向客户端回射信息,没什么问题
select(nWidth, &readFds, NULL, NULL,&timeout);
if(FD_ISSET(sockfd, &readFds))
{
n = recvfrom(sockfd,mesg, MAX_LINE, 0,(struct sockaddr*)&cliaddr,addrlen);
if (n <= 0)
{
perror("socket closed by remote client");
lostrecv++;
continue;
}
else
{
printf("received message:%s\n",&mesg);
}
totalrecv++;
n = sendto(sockfd,sendmsg,sizeof(sendmsg), 0,(struct sockaddr*)&cliaddr,sizeof(struct sockaddr));
if(n<=0)
{
perror("sendmessage error:");
continue;
}
}
//////////////////////////////////////////////////////////////////////////
但是客户端接收时却出现Invalid argument接收错误,又搞不明白了。
n=sendto(sockfd, sendline, strlen(sendline), 0, (struct sockaddr*)&servaddr, sizeof(servaddr));
if(n<=0)
{
perror("send error:");
continue;
}
//////////////////////////////////////////////recvfrom
select(nWidth, &readFds, NULL, NULL,&timeout);
if(FD_ISSET(sockfd, &readFds))
{
n = recvfrom(sockfd,recv_buffer, MAX_LINE, 0,(struct sockaddr*)&cliaddr,addrlen);
if (n <= 0)
{
perror("recv error:");
continue;
}
else
{
printf("received message:%s\n",&recv_buffer);
}
} |
|