紧急!!!!一个socket问题??(50分)

  • 主题发起人 主题发起人 xxhsh
  • 开始时间 开始时间
X

xxhsh

Unregistered / Unconfirmed
GUEST, unregistred user!
在一个c/s的聊天系统中,服务器在同一时刻接受不同用户的信息,
都是在ServerSocket1ClientRead中处理的吗?那么里面定义的变量
会不会发生冲突呢?如何处理的??
 
serversocket中的connections属性是一个数组,代表一个当前活动的连接,
序号为0(即connections[0])代表第一个连接
序号 1 二
序号 2 三

那么当第一个连接退出后,connections[0]代表第二个连接吗??
 
怎么各位大侠对我的问题不屑一顾吗?
没有人回答我???
 
我也有同样的问题,各位大侠帮帮咱吧!!!
我也有份相谢
 
最好为每一个客户连接开一个线程或者使一个线程支持几个客户连接。而具体的每一个WINS
OCK连接则完全可以封装成一个类,这样就不会出现变量冲突的问题。如果必须使用一些全
局的变量,则必须使用线程安全对象来进行保存。
 
是的,每收到一句时,还能收到SocketHandle,用它可判断来自于何处
 
最好还是每一个WINSOCK连接都封装成一个类,是使用或者操作都比较方便。
 
我也有同样的问题,关注中!!!
 
我以前做的IRC Server的处理方法是定义一个用户类,为每一个客户端声明一个实例
 
tserversocket已经含有多线程处理了。不须你考虑了。
 
我用VC中的CSocket做过类似的c/s聊天系统(delphi中没试过)。
当一个用户对服务器进行连接请求时,服务器(accept)后把客户输入的信息(ip地址,
用户名等)存入一个链表中(也可以用数组),来一个连接,服务器端就把它加入AddTail(),
若某一客户中途退出,则删除链表中的对应项。当然第二个连接也就变第一个了。
若把链表中的用户信息发回客户端进行处理,则可以显示在线人数,及其它消息。
 
我也有同样的问题,那里有SOCKET的详细介绍教程啊?
 
当第一个连接退出后,connections[0]会自动变为第二个连接。
 
如何判断它是活动连接呢?
在非阻塞的方式下,如何判断这个connections[n]是活动或者关闭的?
使用方法是不是和VB的那个控件数组一样?
 
当第一个连接退出后,connections[0]会自动变为第二个
活动连接?
for i:=0 to ServerSocket.Socket.ActiveConnections-1 do
if serversocket.Socket.Connections.RemoteAddress=_toaddress then
begin
serversocket.Socket.Connections.SendText(str);
end
else
此连接已断开:

toaddress如何判定呢?最简单的是这样在发送时
ClientSocket.Socket.SendText('youraddress'+'^'+str);//用^ 号分割
接收时这样
str:=Socket.ReceiveText;
{以下进行字串分割}
_spechar:=pos('^',str); //^为分节符
_address:=copy(str,1,_spechar-1); //存储子address
delete(str,1,spechar); //删除已存字串
一切ok

 
我需要的!
 
后退
顶部