UDP方式,接收数据不正常的问题
CBuilder6编写的,同一个程序,既收也发,分别运行在两台机器上,使用相同的端口,发现接收数据不太稳定,常出现接收程序收不到数据的情况。两边我用Sniff验证,发端确实发出,接收方也收到,数据的发送量和大小都不大。使用WSAAsyncSelect方式
SOCKADDR_IN from_sin,to_sin;
from_sin.sin_family = AF_INET;
from_sin.sin_port = htons(5000);
from.sin.sin_addr.s_addr = inet_addr("........//本机地址
to_sin.sin_family = AF_INET;
to_sin.sin_port = htons(5000);
to_sin.sin_addr.s_addr = inet_addr("..........//对端地址
SOCKET tempsock;
tempsocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
BOOL TempBool = TRUE;
setsockopt(tempsocket,SOL_SOCKET, SO_REUSEADDR,(char *)&TempBool, sizeof(BOOL));
bind(tempsocket, (PSOCKADDR)&from_sin, sizeof(from_sin));
WSAAsyncSelect(tempsock,hwnd,WSA_READ,FD_READ);
//#define WSA_READ (WM_USER + 1001)
//增加connect调用的原因是编程方便,这里也可以不用
connect(tempsock,(PSOCKADDR)&to_sin,sizeof(to_sin);
//接收HandleWsaRead
char buf[1024];
int tolen = sizeof(SOCKADDR_IN);
len = recvfrom(tempsocket,buf,1024,FALSE,(PSOCKADDR)&(to_sin),&tolen);
//发送
send(tempsocket,buf,sizeof(buf),0);
//后来改用线程,阻塞方式,去掉select,结果还是一样
SOCKADDR_IN from_sin,to_sin;
from_sin.sin_family = AF_INET;
from_sin.sin_port = htons(5000);
from.sin.sin_addr.s_addr = inet_addr("........//本机地址
to_sin.sin_family = AF_INET;
to_sin.sin_port = htons(5000);
to_sin.sin_addr.s_addr = inet_addr("..........//对端地址
SOCKET tempsock;
tempsocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
BOOL TempBool = TRUE;
setsockopt(tempsocket,SOL_SOCKET, SO_REUSEADDR,(char *)&TempBool, sizeof(BOOL));
bind(tempsocket, (PSOCKADDR)&from_sin, sizeof(from_sin));
WSAAsyncSelect(tempsock,hwnd,WSA_READ,FD_READ);
//#define WSA_READ (WM_USER + 1001)
//增加connect调用的原因是编程方便,这里也可以不用
connect(tempsock,(PSOCKADDR)&to_sin,sizeof(to_sin);
//接收HandleWsaRead
char buf[1024];
int tolen = sizeof(SOCKADDR_IN);
len = recvfrom(tempsocket,buf,1024,FALSE,(PSOCKADDR)&(to_sin),&tolen);
//发送
send(tempsocket,buf,sizeof(buf),0);
//后来改用线程,阻塞方式,去掉select,结果还是一样
...全文
相关推荐
UDP 实现端到端的通讯,两者之间绑定IP 端口
绑定IP 和 客户端的 UDP 通讯 ,可以建两个相同的工程,互相对发(修改下绑定的IP 和端口) 详细介绍见https://mp.csdn.net/postedit/81352132
udp.rar_UDP_UDP指令_unity
一款简易的upd消息指令,适合新手使用 简单通俗暴力
Android模拟器接收UDP数据包的若干问题分析
主要介绍了Android模拟器接收UDP数据包的若干问题,结合实例形式较为详细的分析了Android模拟器接收UDP数据的使用方法与相关注意事项,需要的朋友可以参考下
UDP 协议调试软件
UDP协议调试软件,打开就可以直接发送数据使用。
C++UDP通讯类(兼容window和linux)
这是本人基于c++开发的UDP通讯的轮子,并且封装成类,兼容window和linux,方便使用,包含.cpp和.h两个文件,亲测可用,注释详细,欢迎参考


网络及通讯开发
