急!!在线等 UDP Sock客户端收不到服务器响应

winyee123 2007-11-15 09:49:37
服务器运行在公网IP上,客户端运行在ADSL拨号的局域网内,服务器能够收到客户端的消息,但是当服务器使用收到的IP和端口回复消息到客户端,客户端收不到,理论上应该能收到的,不知道哪里错了,请高手指点,
代码如下:
服务器:
main()
{
SOCKET PrimaryUDP;
PrimaryUDP = mksock(SOCK_DGRAM);

sockaddr_in local;
local.sin_family=AF_INET;
local.sin_port= htons(SERVER_PORT);
local.sin_addr.s_addr = htonl(INADDR_ANY);
int nResult=bind(PrimaryUDP,(sockaddr*)&local,sizeof(sockaddr));
if(nResult==SOCKET_ERROR)
throw Exception("bind error");

sockaddr_in sender;
stMessage recvbuf;
memset(&recvbuf,0,sizeof(stMessage));
for(;;)
{
int dwSender = sizeof(sender);
int ret = recvfrom(PrimaryUDP, (char *)&recvbuf, sizeof(stMessage), 0, (sockaddr *)&sender, &dwSender);
.....

sendto(PrimaryUDP, (const char*)&nodecount, sizeof(int), 0, (const sockaddr*)&sender, sizeof(sender));

}


客户端:

void ConnectToServer(SOCKET sock,char *username, char *serverip)
{
sockaddr_in remote;
remote.sin_addr.S_un.S_addr = inet_addr(serverip);
remote.sin_family = AF_INET;
remote.sin_port = htons(SERVER_PORT);

stMessage sendbuf;
sendbuf.iMessageType = LOGIN;
strncpy(sendbuf.message.loginmember.userName, username, 10);

sendto(sock, (const char*)&sendbuf, sizeof(sendbuf), 0, (const sockaddr*)&remote,sizeof(remote));

int usercount;
int fromlen = sizeof(remote);
int iread = recvfrom(sock, (char *)&usercount, sizeof(int), 0, (sockaddr *)&remote, &fromlen);

...全文
209 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
不知,帮顶
liliangjava 2007-11-26
  • 打赏
  • 举报
回复
首先客户端发送信息时,要用监听的socket
然后服务端接收信息,返回时,要用监听的socket和用来接收的数据报来向回发送!

不知道听明白没??

sxcong 2007-11-20
  • 打赏
  • 举报
回复
int iread = recvfrom(sock, (char *)&usercount, sizeof(int), 0, (sockaddr *)&remote, &fromlen);
直接这样应该是不行的,因为UDP是面向无连接,不保证一定能发成功或收成功。最好,发送和接收单独分成两个线程来做。 以接收为倒,在线程中
while(1)
{
recvfrom
}
这样试试
newone2007 2007-11-19
  • 打赏
  • 举报
回复
是不是客户端和服务器两者的收发没有协调好.在客户端发送后准备接收,如果服务器已经发送结束,客户端就无法收到服务器的回应,阻塞在recvfrom.
再服务器的recvfrom和sendto之间加个延时试试.


tsasdf 2007-11-17
  • 打赏
  • 举报
回复
比较奇怪

4,387

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧