Socket服务器的信息转发功能
我的问题是这样的
Ssk 是一个ServerSocket对象
sk 是一个socket对象
public class createConnect extends Thread
{
ServerSocket Ssk;
public createConnect(ServerSocket Ssk)
{
this.Ssk = Ssk;
}
public void run()
{
while(true)
{
socket sk = Ssk.accept();//建立一个链接
.......如何确认此线程到底是与谁建立的
}
}
}
我的问题是,
如果有四个用户A,B,C,D
A要发送信息给B,首先发送给服务器,服务器再确定转发给B。
如此类推。
主要的问题是我不能确定线程运行后怎么建立有标志性的Socket
比如SocketA,是指服务器与A建立的链接,
SocketB是B与服务器建立的链接,如果A发送给B那么在服务器端
就是由SocketA输入再由SocketB输出。
主要的就是不知道怎么建立有标志性的socket
请问大家有没有这方面的方法可以实现这方面的功能。不需要详细的代码,只要方法就好了,如果可以用的话,追加高分
重点是我不知道如何让服务器找出要转发的对象。
需要的是用用户名确定对象。。而不用IP和端口,你怎么可能预先知道对方的IP和端口号呢?
------解决方案--------------------
主要的就是不知道怎么建立有标志性的socket ;
让我做的话就是建一个类比如
class SocketMessage
{
SocketMessage(Socket s,String n)
{
...
}
Socket s;
String name;
.....
}
当服务端accept到一个socket后就 SocketMessage sA = new SocketMessage(s,"A");
然后再把这个sA添加到一个列表比如ArrayList中.
------解决方案--------------------要想ABCD互相发送消息,首先就要4个用户与服务器创建连接,这样服务器就知道他们各自的IP地址和端口啦,服务器再创建对象,将用户名与IP地址和端口关联起来,A发送给服务器的请求中包含B用户名,服务器根据用户名查找到它的IP和端口,消息就可以转发出去了。
------解决方案--------------------
消息,消息中带有名字就ok,晕,搞那么复杂