Help! WinSocket的问题(100分)

  • 主题发起人 主题发起人 胡一刀007
  • 开始时间 开始时间

胡一刀007

Unregistered / Unconfirmed
GUEST, unregistred user!
紧急求救各位大虾,我用D5进行winsocket的部件编程时,遇一问题:
procedure TchatForm.Memo1KeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
var
ActiveCount:integer;
begin
if Key = VK_Return then
begin
if IsServer then
begin
for ActiveCount:=0 to ServerSocket.Socket.ActiveConnections-1do
ShowMessage(inttoStr(ServerSocket.Socket.Connections[ActiveCount].SendText(Memo1.Lines[Memo1.Lines.Count - 1])));
SocketStatusBar.Panels[0].Text:='向服务器'+ ServerSocket.Socket.RemoteAddress+'发送信息...';
end
else
begin
ClientSocket.Socket.SendText(Memo1.Lines[Memo1.Lines.Count - 1]);
SocketStatusBar.Panels[0].Text:='向客户端'+ ClientSocket.Socket.RemoteAddress+'发送信息...';
end;
end;
end;
其中运行时,发现ActiveConnections为1,正确!因有一客户端在连接,服务器端发出的信息客户端接收到了,可服务器端还是出现了以下提示:
Windows socket error:由于套接字没有连接并且(当使用一个sendto调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。(10057),on API 'getpeename'。
如果没连接不成功,可ActiveConnections为1啊,且客户端也收到数据了,只是有延时啊,那Socket就应该是存在的啊?可为何还报错?帮帮我吧!先谢谢了!
 
我还是先看看Demo吧,一定是少了什么!
谢谢大家了!
不用大家回答了!
 
用Delphi实现Socket5代理编程系列讲座 陈经韬
http://www.delphibbs.com/keylife/iblog_show.asp?xid=2768
你可参考一下这里的
 
for ActiveCount:=0 to ServerSocket.Socket.ActiveConnections-1do
ShowMessage(inttoStr(ServerSocket.Socket.Connections[ActiveCount].SendText(Memo1.Lines[Memo1.Lines.Count - 1])));
SocketStatusBar.Panels[0].Text:='向服务器'+ ServerSocket.Socket.RemoteAddress+'发送信息...';
应改为:
for ActiveCount:=0 to ServerSocket.Socket.ActiveConnections-1do
begin
ShowMessage(inttoStr(ServerSocket.Socket.Connections[ActiveCount].SendText(Memo1.Lines[Memo1.Lines.Count - 1])));
SocketStatusBar.Panels[0].Text:='向服务器'+ ServerSocket.Socket.Connections[ActiveCount].RemoteAddress+'发送信息...';
end;
 
我明白了,主要是因为端口被占用,换其它端口就OK了!
我还有其它有关socket的问题,请麻烦大家帮我看看!先谢谢了!
散分了!
 
后退
顶部