java socket一对多通信如何实现?
【server端】 import java.io.*;import java.net.*;public class MultiSocketServer{public static void main(String str[]) throws IOException{ServerSocket server=new ServerSocket(3333);//绑定端口while(true){Socket client=server.accept();//监听ChildTh child=new ChildTh(client);Thread t=new Thread(child);t.start();}}}class ChildTh implements Runnable{private Socket client;public ChildTh(Socket client){this.client=client;}public void run() {try{BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));PrintWriter out=new PrintWriter(client.getOutputStream());while(true){String s=in.readLine();System.out.println(s);out.println("has received……");out.flush();if(s.equals("end"))break;}client.close();}catch(Exception e){e.printStackTrace();}}}【client端】import java.net.*;import java.io.*;public class MultiSocketClient{static Socket server;public static void main(String str[]) throwsIOException{server=new Socket("222.195.151.47",3333);BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));PrintWriter out=new PrintWriter(server.getOutputStream());BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));while(true){String s=wt.readLine();out.println(s);out.flush();if(s.equals("end")){break;}System.out.println(in.readLine());}server.close();} }
服务器端发送消息,你要知道给哪个客户端发,应该是将所有的客户端连接都放在数组里,然后遍历数组发送 参考下吧:http://wenku.baidu.com/view/a9598469c5da50e2524d7f82.html
看看是不是线程被锁住了,比如socket.read(),最好是一个连接用独立的线程,这样不会相互影响

java中的socket通信,怎么发送一个byte[]数组?
socket发送的是流,所以必须将byte[]转换成流的形式,之后才可以发送的。创建socket后可以通过下面的方法实现发送: PrintWriter pw = null;pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter( socket.getOutputStream())));//创建一个输入流,之后这个流的指向是socketpw.write(request.toString()); //写入要输入的Byte[],转换为字符串,之后进行传送 pw.close();//传送完毕,关闭流
![java中的socket通信,怎么发送一个byte[]数组?](https://static.wangsu123.cn/pich-amF2YeS4reeahHNvY2tldOmAmuS/oe+8jOaAjuS5iOWPkemAgeS4gOS4qmJ5dGVbXeaVsOe7hO+8nw==g.png)
java里socket通信,异常处理问题。
直接用这种方式处理:while(true){socket = new Socket(("192.168.183.1", 9002);socket.setSoTimeout(5000);//5000ms = 5stry{socket.connect();}catch(IOException e){//这行写你提示通信失败提示continue;}}
在建立socket连接时设置超时时间,连接不上的话就反馈连接失败不就可以了嘛
try catch 处理下 连不上没有必要继续了吧

Java 关于Socket通信对象流传输的问题
建议采用Tcpmessage,在报文体里写你要传的东西,设置不同的报文头,通过独到的报文头判断你传的是对象是文件
你的这一段代码从逻辑上来说是没有问题的。建议你贴出更多的代码来! 我建议你不要把socket 和 in 、out的new放过放到这里来。
建议使用 xml 或JSON 传输内容,而不是直接传输对象
trAddInfo 中的对象所对应的类实现 Serializable接口。

java socket实现两个客户段或多个客户端之间通信,该怎么解决
javasocket有两种方式。一种是UDP这个可以直连,不需要服务器。一种是TCP这个是肯定要能过服务器来通信的。所以你说的。链接建立完毕后不再通过服务器!这个可以实现,但会麻烦一些。1.先说一下简单的点的吧。用TCP的方式。你所有的消息都是发给服务器。包含你的IP及通信端口,及对方的IP及通信端口信息。当然这些是隐藏在数据报中的。这样由服务器来进行分发。2.你说的那种方式有点类似TCP与UDP混合。首先启动一个SERVER然后每一个客户端,先要登陆SERVER,并在server上记录下你的IP及通信端口信息,如果你要连接某一个客户端。先要向服务器发出一个申请,获得到方的IP及端口信息,然后进行UDP连接。连接上以后,就是直接发送息,不需要服务器了。javasocket的东西,以前做过一些,所以有思路,但没有现成的代码。有问题再联系。

本文由 在线网速测试 整理编辑,转载请注明出处。