使用IP区分 你可以这样ServletSocketaccept获取到的Socket对象 使用Map存起来,IP做Key MapIp,Socket这样就可以了 简单做法就是IP区分,复杂点就做个加密产生一个令牌连同消息传过去客户端的IP相同吗可以根据IP地址来区分可以这样做,在客户端给服务器发消息时在消息的头部加上标识,这样就可;只有服务端的ServerSocket才可以和Socket通信,两个Socket之间不能够直接通信。
在Java中使用TCPIP将服务器的消息发送给多个用户时,首先你需要通过accept方法获取到一个Socket,这个Socket是连接到客户端的Socket,用于实现两者之间的通信为了实现这个功能,我创建了一个ServerThread类,用于处理与每个客户端的交互在ServerThread类中,我为Socket创建了一个成员变量so,并通过构造函数;现编这个就是个多线程服务器,只要在client不释放连接,服务器端的run里边写whileTRUE循环,那么就可以长期连接class ConnectionThread extends Thread Socket clientint counterpublic ConnectionThreadSocket cl,int c client = clcounter= c Override public void run try String。
thread1startthread2start在你的线程类中应该提供一个方法,用于关闭这个线程所创建的socket连接例如你的MyThread类中应该提供一个关闭socket的方法public void closeSocket 这里关闭当前对象的socket 这样,如果你想关闭thread1中的连接该连接使用8888端口,则只要调用这个方法;一个客户端socket对象连接成功时,你保持这个连接状态不关闭,只要用这个对象发送的就只会到那个客户端如果是短连接的话,你就需要用客户端的标识来保存好这个message,等下次客户端再连接的时候,用标识找到message,然后发送给它TCP。
在Java中实现SOCKS5代理功能的客户端,需要通过构建SocketAddress对象来指定代理服务器的地址和端口这里使用InetSocketAddress类来表示代理服务器的具体位置,例如代理服务器的IP地址和端口号接着,利用Proxy类和参数创建一个Proxy对象,传递上述SocketAddress对象作为参数这个Proxy对象代表了;问题二对于socket,不存在得到还是得不到的你要利用tcpudp协议先要构造和初始化socket才行客户端socket和服务端socket进行全双工通信即使是最简单im演示程序,用户的好友列表都应该考虑在服务器端持久化和管理客户端程序要想得到其好友列表,只需要执行一次”请求响应”即可写这方面的程序;重要的Socket API继承于,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK13文档 Accept方法用于产生quot阻塞quot,直到接受到一个连接,并且返回一个客户端的Socket对象实例quot阻塞quot是一个术语,它使程序运行暂时quot停留quot在这个地方;2如果自建socket服务器,建议最好不用SSHSSM之类的框架,可控性更高,更加轻量,但工作量稍显繁多,且复杂建议使用Netty做scoket基础框架3客户端服务端通信可以用json格式的文本行字符流,以rn自动做粘包断包解码,还有自定义数据格式的字节流比如 数据包内容长度+数据包内容,以数据;也不知道怎么说怎么用,我写的代码,很久了,用的是awt,感觉Java在应用程序上没前景所以就没在深入了现在主攻J2ee,代码给你,你自己感觉吧 服务端import javaio*import javanet*import javautil*public class ChatServer boolean started = falseServerSocket ss = nullListlt;首先启动一个SERVER 然后每 一个客户端,先要登陆SERVER,并在server上记录下你的IP及通信端口信息,如果你要连接某一个客户端先要向服务器发出一个申请,获得到方的IP及端口信息,然后进行UDP连接连接上以后,就是直接发送息,不需要服务器了java socket的东西,以前做过一些,所以有思路,但没;可以考虑修改设置1修改操作系统配置减少TIME_WAIT时间,Windows上的设置方法是进入注册表的HKLMSYSTEMCurrentControlSetservicesTcpIpParameters,添加一个DWORD项“TcpTimedWaitDelay”,时间可设置的短一些比如60秒或30秒2使用Socket提供的SO_LINGER选项。
1服务端监听一个端口,其它客户端都通过这个端口和服务端进行通信2每个客户端连接上来,服务端给其一个标识ID然后向其它所有客户端广播一下有新客户端接入,ID多少3客户端要向客户端发送消息,可以以消息包的形式发送,就是把目的客户端的标识和发送的内容组成一个数据包发往服务器,服务器;我猜可能有两个原因 1,如果不是无阻塞的Socket,SocketServer正在响应一个另外的客户端,这是测试工具发送的数据可能是发送过去了但是被阻塞在了缓冲区中用测试工具的时候你的客户端停止了么2,可能也就是SocketServer字符串输出缓冲区问题,有时候在做网络通讯的时候,在一些IDE集成开发环境里,你;完全不需要一种办法,如果你只是想试试,可以先去找到自己的外网IP,然后把这个作为服务端的IP,写入客户端的设置如果没有这方面的设置就得重新编译,让外网的朋友们联系下试试外网IP现在服务商提供的一般是DNS动态IP所以你往往需要搜下,有些可以检测IP的网页,能测出你本次上网被分配的。
标签: javasocket多客户端