ReceiveThread线程用于接收UDP数据,在button1下面启动这个线程。当程序运行时,单击一次button1,如果数据进来则接收正常。但是我发现如果程序刚运行时单击两次该按钮,在第二次单击后则会弹出Error=10022,ret1=-1,说明socket接收出错,但是这时我再用sendto 发送一个数据时,竟然还是能够收到这个数据。完全不明白了,第一,该线程最后我都closesocket该mConSock了 怎么mConSock还能接收呢? 第二,我不懂这个soecket到底是什么?每当接收到一个连接时,系统会自动增加一个 socket吗?这个流程我觉得好像这样的:我第一次单击时开启了一个socket,这时如果没有数据收到,我再单击启动该线程,开启了第二个socket,然后第二个socket会出错,这时如果有数据进来,则接收到的是第一个socket的RecvFrom接收的数据。好像TCP的accept 函数是这样的?socket描述符和描述表的关系我就是搞不太明白。望大家帮忙解答一下我这个问题啊!
UINT ReceiveThread(LPVOID lparam)
{
SOCKET mConSock;
char buf[50];
mConSock = socket(AF_INET, SOCK_DGRAM,0);
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htons(8010);
bind(mConSock,(sockaddr*)&addr,sizeof(addr));
ret1=recvfrom(mConSock ,buf,sizeof(buf),0,(sockaddr*)&addr,&len);
str1.Format("%d",ret1);
Error=WSAGetLastError();
str2.Format("%d",Error);
str3=(CString) buf;
AfxMessageBox("buf值 "+str3+" ; "+"recvfrom返回值 "+str1+"; WSAGetlasterror返回值 "+str2+" ;");
closesocket(mConSock);
return NULL;
}
UINT ReceiveThread(LPVOID lparam)
{
SOCKET mConSock;
char buf[50];
mConSock = socket(AF_INET, SOCK_DGRAM,0);
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htons(8010);
bind(mConSock,(sockaddr*)&addr,sizeof(addr));
ret1=recvfrom(mConSock ,buf,sizeof(buf),0,(sockaddr*)&addr,&len);
str1.Format("%d",ret1);
Error=WSAGetLastError();
str2.Format("%d",Error);
str3=(CString) buf;
AfxMessageBox("buf值 "+str3+" ; "+"recvfrom返回值 "+str1+"; WSAGetlasterror返回值 "+str2+" ;");
closesocket(mConSock);
return NULL;
}
解决方案 »
- 如何检测自己重复运行了,并最大化先前的实例?
- 关于SelectObject、DeleteObject和DeleteDC的问题
- 生成一个OCX控件遇到控件中edit无法显示问题
- 在opengl中怎样通过鼠标得到RAW地形一些点的高度数据?
- *** 请问有COM编程高手吗? 我的问题: 进程外, 多个用户创建实例, 怎么才能让他们只使用一个COM组件的实例???
- 如何用vc调系统输入法 api函数是?
- 在一个OCX中,我创建了一个视图,并且可以在上面正常显示,请问怎么样这个VIEW与我的DOC关联起来!
- vc中的循环的内存泄漏问题
- 接下去我该如何?
- 请问各位大侠:如何确定MDAC是否安装和安装的版本。
- 如何得到IID_IHTMLDocument2的指针呢?
- ace 问题
两个线程就会recvfrom两个
得到这个结果和你的程序本身流程不冲突
-------------------------------------------------------
广告:VC/WinAPI 网络/多线程讨论 QQ群, 群号:41356711