1. char buf[1024];
int nRet = recv(s, buf, 200, 0);
buf[nRet]= "\0";
strTemp.Format("%s", buf);
S端发送250个字符,前200 个没问题,后50 个中前20 个是乱码,请问问题出在哪里?2.
main()
{
switch(msg)
{
case FD_ACCEPT:
HThread = AfxBeginThread(Accept, &Server);
if (HThread == NULL)
{
closesocket(Server);
WSAClearup();
}
}
}UINT Accept(LPVOID lparam)
{
ClientThread = accept(....);
AfxBeginThread(Send, &ClientThread); while(1)
{
...
FD_READ: recv(...);
FD_CLOSE:
{
closesocket(ClientThread);
AfxEndThread(0, TRUE);
}
}
return(0);
}我想Accept在收到FD_CLOSE后, 结束Accept线程同时Send线程也应相应结束,但Send线程却没有结束,请问应如何解决?
int nRet = recv(s, buf, 200, 0);
buf[nRet]= "\0";
strTemp.Format("%s", buf);
S端发送250个字符,前200 个没问题,后50 个中前20 个是乱码,请问问题出在哪里?2.
main()
{
switch(msg)
{
case FD_ACCEPT:
HThread = AfxBeginThread(Accept, &Server);
if (HThread == NULL)
{
closesocket(Server);
WSAClearup();
}
}
}UINT Accept(LPVOID lparam)
{
ClientThread = accept(....);
AfxBeginThread(Send, &ClientThread); while(1)
{
...
FD_READ: recv(...);
FD_CLOSE:
{
closesocket(ClientThread);
AfxEndThread(0, TRUE);
}
}
return(0);
}我想Accept在收到FD_CLOSE后, 结束Accept线程同时Send线程也应相应结束,但Send线程却没有结束,请问应如何解决?
这个函数的用法错误,建议楼主使用CreateThread配合信号量来关闭线程,或者用EndThread也可以。
是改成1024
int nRet = recv(s, buf, 200, 0);
buf[nRet]= "\0"; //这里错了,改为buf[nRet] = '\0';
strTemp.Format("%s", buf);