UINT ProcessSendData(LPVOID lparam)
{
CSocket socket;
socket.Create(); /////堆栈错误?? 在堆栈中创建也出错。
}
app类已经调用了初始化函数。
直接用API也没有问题, 但send数据后服务器端接收不到,但调试发现send发送字节数正确没有错误。另一个对话框应用程序也没错。
我这个线程在一个非模式对话框中创建,不知道为什么会出错。在对话框中创建socket后detach再传给线程attach也一样错误。实在不知道咋回事了。难道在非模式对话框中启动线程不能使用csocket?
{
CSocket socket;
socket.Create(); /////堆栈错误?? 在堆栈中创建也出错。
}
app类已经调用了初始化函数。
直接用API也没有问题, 但send数据后服务器端接收不到,但调试发现send发送字节数正确没有错误。另一个对话框应用程序也没错。
我这个线程在一个非模式对话框中创建,不知道为什么会出错。在对话框中创建socket后detach再传给线程attach也一样错误。实在不知道咋回事了。难道在非模式对话框中启动线程不能使用csocket?
解决方案 »
- 怎样隐藏控制台程序的窗口
- 有人找我一起做外挂,怎么办?
- CString转成DWORD,怎么转呀?
- 使用Winsock怎样能够发送自定义IP报头的数据报?
- 以后可能会少来csdn吹水了
- 请问如何在对话框中添加菜单?
- 菜鸟求教基础问题,单文档系统中的打印和打印预览。
- CFindReplaceDialog如何与菜单里的查找关联起来
- 我用domodal()打开一个窗口,可是确要点一下鼠标右键才能获得焦点,怎么回事
- 谁会DCOM编程,我在北京 需要指点 [email protected]
- 信道.我用SOCKET做了客户端/服务端,需要用信道模拟,但不会做信道.希望各位大侠能帮我啊!
- 用VC实现屏幕下雪效果
你建工程的时候是不是选择了Socket支持?你看InitInstance的第一句话是什么? :)
广告:VC/WinAPI 网络/多线程讨论 QQ群, 群号:41356711
新建了一个对话框程序,启动一个线程就没有问题,无语了。TLS倒是有可能了,但是为什么会这样能否详细赐教,谢谢。
根本还是把CSoket转换为 Socket API。
看看能不能成功? 反正我已经反复实验是可以的。
因为它是消息驱动的
如果没有了窗口,当然会失败
除非必要,否则不要使用CSocket,
它的实现比较垃圾的,直接用SOCKET API编写好了CSocket 可以支持多线程,前提是必须是界面线程,工作线程模式下,
CSocket由于无法发送消息,会导致错误
{
//得到socket版本信息。
WORD wVersionRequested;// 定义版本信息变量
WSADATA wsaData;//定义数据信息变量
int err;//定义错误号变量
wVersionRequested = MAKEWORD(1,1);//给版本信息赋值
err = WSAStartup(wVersionRequested, &wsaData);//给错误信息赋值
if(err!=0)
{
::AfxMessageBox("Socket fail");
return 0;//告诉用户找不到合适的版本
}
else
{
if(LOBYTE(wsaData.wVersion)!= 1|| HIBYTE(wsaData.wVersion)!=1)
{ ::AfxMessageBox("Socket fail");
WSACleanup();//告诉用户找不到合适的版本
return 0;
}
else
{ //#define PORT 34000 /// Select any free port you wish
AfxSocketInit(NULL);
CSocket sockSrvr;
sockSrvr.Create(PORT); // Creates our server socket
sockSrvr.Listen(5); // Start listening for the client at PORT
while (1)
{
CSocket sockRecv;
int m= sockSrvr.Accept(sockRecv); // Use another CSocket to accept the connection
if((m>0) && SendMark)
{
sockRecv.Send(sendstr,48);
SendMark=!SendMark;
}
}
}
}
return 0;
}在多线程测试通过