关于SOCKET的多线程问题(50分)

  • 主题发起人 主题发起人 千飞雪
  • 开始时间 开始时间

千飞雪

Unregistered / Unconfirmed
GUEST, unregistred user!
我的一个程序用通过SOCKET进行INTERNET通信,服务器是用SERVERSOCKET控件做的,在ONREAD事件中用多线程处理不同客户端发来的数据。
现在有一个问题:服务端运行一段时间后会出现“Read Error 64 :指定的网络名不再用用”。请问这是什么错误,如何解决?
 
up,up..............................
 
难道高手今天都休息了吗?
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
 
help,各位高手!
 
分不够可以加!
 
贴出发送和接收代码,我帮你看看
 
socketserver :
servertype:=stThreadBlocking

ONGetThread事件:
SocketThread:=MyThread.Create(false,ClientSocket);

在MyThread线程中:
..........................
if SocketStream.WaitForData(60000) then
begin
while (not Terminated) and ClientSocket.Connected do
begin
ls_len:=SocketStream.Read(Buffer, 1024);
if ... then
begin
ClientSocket.Close;
break;
end;
end;
end;

 
SocketStream是啥东东?
控制逻辑上好象有问题,SocketStream.WaitForData应该在while里面吧?
 
你贴的这段接收代码本身没有问题,但是你用的是线程处理连接问题,ClientSocket.Close;我想问题出在这里,可能是你服务器端和客户端断开处理不一致造成的。
 
这个代码没有任何问题,把省略的贴出来
 
问题很简单,是Recv或者send返回的错误,是对方主动关闭了连接,[:D]
 
问题是如何解决?
 
后退
顶部