一个进程对以本地IP bind 多个端口可以吗? 我是说:一个端口来读取UDP消息包,一个端口来发送处理的UDP消息包要是同一个端口进行接受发送,会不会很拥挤呢?谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 渔小鱼:你是说可以bind吗?我能够从一端口读消息,从另一端口发消息我不确定,因为我要在2个线程中分别来处理这些事情... 不会拥挤的。你以为你拥挤啊。你只有一个CPU拥什么挤 是一个CUP没错啊可我的线程要发数据,可又不知道端口此时是不是在接收数据这儿线程的同步问题怎么处理?是不是不需要对socket同步啊? int AddrLen = sizeof(SOCKADDR); int rs; while(TRUE) { FD_ZERO(&fdRead); SOCKET s = m_sReadIn; FD_SET(s, &fdRead); rs = select(NULL,&fdRead,NULL,NULL,NULL); //&stTime if (rs > 0) { //读取数据 memset(Data,0,sizeof(Data)); rs = recvfrom(m_sReadIn,Data,sizeof(Data),0, (SOCKADDR*)&m_RemoteSockAddr_In,&AddrLen); std::string Info("读到消息:"); Info = Info + Data; m_LogFile.WriteLog(Info);...为什么我给该端口发了数据包,select就是不返回啊 用两个端口没问题, 一收一发好控制。FTP就是两个端口的,一个管数据,一个管命令。 FD_ZERO(&fdWrite);FD_SET(m_sReadWrite, &fdWrite);rs = select(NULL,NULL,&fdWrite,NULL,NULL);if (rs > 0){ rs = sendto(m_sReadWrite,OutMsg.c_str(),OutMsg.size(),0,(SOCKADDR*)&m_RemoteWriteToSockAddr_In,sizeof(SOCKADDR)); //发送失败,写日志 if (SOCKET_ERROR == rs) { }}//端口可以发送数据我只有依照读信息如法炮制了,我测试了一下,还行呢还是有疑问:读线程recvfrom读到一半数据,线程被挂起,这时候写线程开始往改端口灌数据,select返回值也大于0端口的读写之间好像毫不相干? 多线程与定时器问题 突然觉得MFC比SDK方便多了。。。 请问Windows 画板.exe 里面写字时弹出的 字体工具栏 是不是系统的呀,我能不能再自己的程序里面把他调出来? 如何判断一个buffer里的字符串究竟是Unicode 还是 UTF8? 熟悉MSMQ编程的高手请进×××××××××××××××××××××××× 哪位帮忙解决一下线程问题 怎么样才能学好VCMFC编程呢? 请帮我看以下这个错误? 网络监控的开发思路 一个与WinSock有关的简单问题(20分),谢谢! CTypedPtrArray的使用问题 请问各位,这是什么原因啊???????
你以为你拥挤啊。
你只有一个CPU拥什么挤
可我的线程要发数据,可又不知道端口此时是不是在接收数据
这儿线程的同步问题怎么处理?是不是不需要对socket同步啊? int AddrLen = sizeof(SOCKADDR);
int rs;
while(TRUE)
{
FD_ZERO(&fdRead);
SOCKET s = m_sReadIn;
FD_SET(s, &fdRead);
rs = select(NULL,&fdRead,NULL,NULL,NULL); //&stTime
if (rs > 0)
{
//读取数据
memset(Data,0,sizeof(Data));
rs = recvfrom(m_sReadIn,Data,sizeof(Data),0, (SOCKADDR*)&m_RemoteSockAddr_In,&AddrLen);
std::string Info("读到消息:");
Info = Info + Data;
m_LogFile.WriteLog(Info);
...为什么我给该端口发了数据包,select就是不返回啊
FD_SET(m_sReadWrite, &fdWrite);
rs = select(NULL,NULL,&fdWrite,NULL,NULL);
if (rs > 0)
{
rs = sendto(m_sReadWrite,OutMsg.c_str(),OutMsg.size(),0,(SOCKADDR*)&m_RemoteWriteToSockAddr_In,sizeof(SOCKADDR));
//发送失败,写日志
if (SOCKET_ERROR == rs)
{
}
}//端口可以发送数据我只有依照读信息如法炮制了,我测试了一下,还行呢
还是有疑问:
读线程recvfrom读到一半数据,线程被挂起,
这时候
写线程开始往改端口灌数据,select返回值也大于0
端口的读写之间好像毫不相干?