JAVA TCP通信,客户端给服务器传送JAVA对象通信出错了,求各位大神指教
在java中用socket传输对象的时候,底层是把java对象序列化,然后以二进制数据进行传输的。socket的服务端和客户端都需要有这个对象的声明,比如客户端发送的是com.client.MsgPackage对象,那么这个对象的class文件必须在服务端的classpath中。否则就会是接收方接收了tcp的数据包,但是无法还原成对象。 底层要能把对象序列化,这个对象要实现一个可序列化的接口:java.io.Serializable。类通过实现 java.io.Serializable接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。writeObject 方法负责写入特定类的对象的状态,以便相应的 readObject 方法可以恢复它。通过调用out.defaultWriteObject 可以调用保存 Object 的字段的默认机制。该方法本身不需要涉及属于其超类或子类的状态。通过使用writeObject 方法或使用 DataOutput 支持的用于基本数据类型的方法将各个字段写入 ObjectOutputStream,状态可以被保存。readObject 方法负责从流中读取并恢复类字段。它可以调用 in.defaultReadObject来调用默认机制,以恢复对象的非静态和非瞬态字段。defaultReadObject方法使用流中的信息来分配流中通过当前对象中相应指定字段保存的对象的字段。这用于处理类演化后需要添加新字段的情形。该方法本身不需要涉及属于其超类或子类的状态。通过使用 writeObject 方法或使用 DataOutput 支持的用于基本数据类型的方法将各个字段写入 ObjectOutputStream,状态可以被保存。
wolAI那红包的
明显是Server这端没有加载到com.client.MsgPackage这个类,你的MsgPackage实现了Serializable接口吗?

怎么用Java实现使用TCP协议实现文件传输程序
服务端监听:ServerSocket server=new ServerSocket(port);//port:绑定的端口号 Socket client=server.accept();//监听端口,一旦取得连接则获得客户端的socket连接对象client客户端: Socket s=new Socket(ip,port);//要连接的服务器的ip以及端口号如果正常连接上之后,socket的对象可以获得InputStream和OutputStreame,然后就可以进行通信了 完成通信之后,执行socket对象的close()方法关闭连接,完成一次完整的socket连接
先用用File读取文件,然后用socket传输文件

java如何通过tcp向指定的IP发送指令并获得返回的包?
以下是一个展示java使用tcp通讯的简单例子,包括服务器和客户端代码: /***TCPServer*/import java.io.*;import java.net.*;class TCPServer{public static void main(String[] args)throws IOException{ServerSocket listen = new ServerSocket(5050);Socket server= listen.accept();InputStream in = server.getInputStream();OutputStream out = server.getOutputStream();char c = (char)in.read();System.out.println("收到:" + c);out.write('s');out.close();in.close();server.close();listen.close();}}/***TCPClient*/import java.io.*;import java.net.*;class TCPClient{public static void main(String[] args)throws IOException{Socket client = new Socket("127.0.0.1" , 5050);InputStream in = client.getInputStream();OutputStream out = client.getOutputStream();out.write('c');char c = (char)in.read();System.out.println("收到:" + c);out.close();in.close();client.close();} }

java与C#进行TCP局域网通信,丢包严重,怎么解决
首先你要知道TCP是可靠传输的,并不会造成丢包,缺少数据一般是系统设计的问题。 你可以把程序关键部分的代码贴出来,个人猜测,您可能使用了BufferedOutputStream之类的缓冲流对原始socket流进行了包装,因此,write的内容并不会立即发送到端系统,直接在原始流上进行write操作即可。

java与C#进行TCP局域网通信,丢包严重,怎么解决
应该没有这样严重的。 TCP只有在网络很差的情况下会有些数据丢掉的。 你在局域网应该还不至于俄。 多办是没有处理粘包俄。人家还没有把数据发给你就读取了。读到就会是 00定协议把。 很简单的俄。 如 包头+数据区域的长度+数据。 这样根据长度来解析数据就不会出现粘包了。

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