问题:
插图:
acceptedSocket = accept (server, (sockaddr *)&sin, &len);
插图: - 在线程功能中
//omitted
SOCKET RemoteSocket = (SOCKET) client;
//omitted
send (RemoteSocket, stringToSpend, strlen(stringToSpend), 0)
建议:
答案 0 :(得分:2)
accept()返回一个新的特定于连接的套接字的句柄。对于服务器代码,它涉及2个以上的套接字:一个处于监听状态,你正在调用accept(),第二个是从accept()返回的一个 - 它是一个传入的连接套接字。如果accept()返回0,则accept()可以返回第二个传入连接的套接字等,这不是传入连接 - 这是一个错误。
答案 1 :(得分:2)
不是行中的问题
acceptedSocket = accept (server, (sockaddr *)&sin, &len) == INVALID_SOCKET)
你将acceptedSocket
作为比较的结果,但你应该以某种方式存储从accept返回的实际套接字:
acceptedSocket = accept (server, (sockaddr *)&sin, &len);
isOK= acceptedSocket!=INVALID_SOCKET;
虽然我对你帖子中不平衡的括号感到有些困惑,但我可能错了
答案 2 :(得分:0)
嗯,好像你的send
在accept
发生之前执行得太快了。因此发送中使用的套接字在执行发送点时无效。多线程的一个令人讨厌的特征。您需要等待send
线程中的事件并在接受发生时触发事件