java如何实现基于TCP协议的socket传输
服务端监听:ServerSocket server=newServerSocket(port);//port:绑定的端口号Socketclient=server.accept();//监听端口,一旦取得连接则获得客户端的socket连接对象client客户端:Sockets=newSocket(ip,port);//要连接的服务器的ip以及端口号如果正常连接上之后,socket的对象可以获得InputStream和OutputStreame,然后就可以进行通信了 完成通信之后,执行socket对象的close()方法关闭连接,完成一次完整的socket连接

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

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

java中的socket是什么意思?
所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。重要的Socket API:java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK-1.3文档。. Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。. getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。. getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。2ServerSocket类例子编辑package com.lanber.socket;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class ServerDemo {/*** 注意:Socket的发送与接收是需要同步进行的,即客户端发送一条信息,服务器必需先接收这条信息,* 而后才可以向客户端发送信息,否则将会有运行时出错。* @param args*/public static void main(String[] args) {ServerSocket ss = null;try {ss = new ServerSocket(8888);//服务器接收到客户端的数据后,创建与此客户端对话的SocketSocket socket = ss.accept();//用于向客户端发送数据的输出流DataOutputStream dos = new DataOutputStream(socket.getOutputStream());//用于接收客户端发来的数据的输入流DataInputStream dis = new DataInputStream(socket.getInputStream());System.out.println("服务器接收到客户端的连接请求:" + dis.readUTF());//服务器向客户端发送连接成功确认信息dos.writeUTF("接受连接请求,连接成功!");//不需要继续使用此连接时,关闭连接socket.close();ss.close();} catch (IOException e) {e.printStackTrace();}}}3客户端的例子编辑package com.lanber.socket;importjava.io.DataInputStream;import java.io.DataOutputStream;importjava.io.IOException;import java.io.OutputStream;import java.net.Socket;import java.net.UnknownHostException;public class ClientDemo {/*** @param args*/public static void main(String[] args) {Socket socket = null;try {socket = new Socket("localhost",8888);//获取输出流,用于客户端向服务器端发送数据DataOutputStream dos = new DataOutputStream(socket.getOutputStream());//获取输入流,用于接收服务器端发送来的数据DataInputStream dis = new DataInputStream(socket.getInputStream());//客户端向服务器端发送数据dos.writeUTF("我是客户端,请求连接!");//打印出从服务器端接收到的数据System.out.println(dis.readUTF());//不需要继续使用此连接时,记得关闭哦socket.close();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}} }

java多线程socket通信原理是什么?
第一,程序是通过分时进行服务的。就是说一个程序监听一个端口,第一秒可以从别的地方来一个包,第二秒可以从另一个地方来一个包。 第二,每个socket都会有包发送来的ip地址和端口号,服务器向这个ip对应机器的端口发送数据以回应对方。
简单点说, 每个socket都保有一些信息, 比如他所对应的客户端地址和端口等等, 来唯一确定他所负责的客户端, 所以任何到达10000端口的包都可以有去处: 如果已经有socket和他对应了, 那么交给socket处理, 如果没有, 那么放进请求队列, 等待.accept()方法去抽取他并生成一个socket来和他对应.
当Server每接受到一个Client连接请求之后,都把处理流程放到一个独立的线程里去运行,然后等待下一个Client连接请求,这样就不会阻塞Server端接收请求了。每个独立运行的程序在使用完Socket对象之后要将其关闭。这样就实现了多线程socket通信。
socket 需要 把自己的 ip 告诉ServerSocket,就是根据ip来区分的
防止阻塞 如果不用线程,你在主线程中侦听端口, 那么你会发现,你如果不连接上的话,就会一直在等待,什么也做不了。

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