关于TserverSocket的多线程应用问题.txt(100分)

  • 主题发起人 主题发起人 yvtong
  • 开始时间 开始时间
Y

yvtong

Unregistered / Unconfirmed
GUEST, unregistred user!
局域网聊天程序

服务器端(TserverSocket servertype:stThreadBlocking )

TCharServerThread = class(TServerClientThread)
protected
procedure ClientExecute; override;
end;

procedure TFileServerThread.ClientExecute;
var
Data: array[0..1023] of char;
SocketStream: TWinSocketStream;
senddata:ansistring;
revData:string;

begin
while not Terminated and ClientSocket.Connected do
try
SocketStream := TWinSocketStream.Create(ClientSocket, 20);
try
FillChar(Data, SizeOf(Data), 0);
SocketStream.Read(Data, SizeOf(Data));
revData:=data;
if revData<>'' then
SendMessage(Form1.Listbox1.Handle, LB_ADDSTRING, 0, Integer(PChar(revdata))); //在LISTBOX中显示
finally
SocketStream.Free;
end;
except
HandleException;
end;
end;
客户端:(TclientSocket clienttype:ctNonBlocking)
现在功能:接受多个客户端的消息
问题:如何向不同的客户端随时发送消息
 
你用过winshoes没有,它自带的例子中有个聊天程序,是分服务器端和客户端的。
你可以参照它的方法做一个聊天服务器,然后客户端连到服务器上聊天,这样实现比
一个客户端要接受多个客户端的消息要简单些。
要不就用udp来做吧。
 
我学学。自己作了一个类似的。(纯粹象DEMO)
 
我建议用udp来做比较简单
 
接收客户端发来的信息:
在TserverSocket的 OnClientRead 事件中用传入的参数 Socket 读(Socket.Receive...)

发送给全部活动连接:
for i:=0 to ServerSocket.Socket.ActiveConnections-1 do
ServerSocket.Socket.Connections.Send...
 
多人接受答案了。
 
后退
顶部