套接字应用程序中的Java对象发送错误
首先,请原谅我的语言不好。我正在用java编写一个服务器客户端应用程序,我正试图向服务器发送一个对象,但我遇到了一个异常,一切看起来都很好,我不明白,有人能帮我吗?这是我的代码 如果我做错了,警告我 服务器套接字应用程序中的Java对象发送错误,java,sockets,object,server,client,Java,Sockets,Object,Server,Client,首先,请原谅我的语言不好。我正在用java编写一个服务器客户端应用程序,我正试图向服务器发送一个对象,但我遇到了一个异常,一切看起来都很好,我不明白,有人能帮我吗?这是我的代码 如果我做错了,警告我 服务器 import java.io.IOException; import java.io.ObjectInputStream; import java.net.InetSocketAddress; import java.nio.channels.ServerSocketChannel; imp
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.InetSocketAddress;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
/**
* @author MuhammedMustafa
*
*/
public class Server {
/**
* @param args
* @throws IOException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws IOException, ClassNotFoundException {
Server server = new Server();
server.ReceiveObject();
}
private SocketChannel socketChannel = null;
void ReceiveObject() throws IOException, ClassNotFoundException{
System.out.println("Server Started");
socketChannel = CreateSocketChannel();
ObjectInputStream ois = new ObjectInputStream(socketChannel.socket().getInputStream());
Person person = (Person) ois.readObject();
System.out.println("Object : "+ person.toString());
socketChannel.close();
}
private SocketChannel CreateSocketChannel() throws IOException{
ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
serverSocketChannel.socket().bind(new InetSocketAddress(9100));
socketChannel = serverSocketChannel.accept();
System.out.println("Connection Etablished : " + socketChannel.getRemoteAddress());
return socketChannel;
}
}
客户
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.nio.channels.SocketChannel;
/**
* @author MuhammedMustafa
*
*/
public class Client {
boolean isConnected = false;
private SocketChannel socketchannel;
private ObjectOutputStream outputStream;
public static void main(String[] args) throws IOException {
Client client = new Client();
client.sendOject();
}
/**
* @param args
*/
SocketChannel createChannel() throws IOException {
SocketChannel socketChannel = SocketChannel.open();
socketChannel.configureBlocking(true);
SocketAddress sAddr = new InetSocketAddress("127.0.0.1", 9100);
socketChannel.connect(sAddr);
return socketChannel;
}
void sendOject() throws IOException {
while (!isConnected) {
socketchannel = createChannel();
isConnected = true;
outputStream = new
ObjectOutputStream(socketchannel.socket().getOutputStream());
Person person = new Person(15, "Hello");
outputStream.writeObject(person);
}
}
}
反对
import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
public Person(int i, String string) {
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private int age;
private String name;
}
例外情况
Server Started
Connection Etablished : /127.0.0.1:57896
Exception in thread "main" java.io.IOException: Varolan bir bağlantı
uzaktaki bir ana bilgisayar tarafından zorla kapatıldı(An existing
connection was forcibly closed by a remote host)
at sun.nio.ch.SocketDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(Unknown Source)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
at sun.nio.ch.IOUtil.read(Unknown Source)
at sun.nio.ch.SocketChannelImpl.read(Unknown Source)
at sun.nio.ch.SocketAdaptor$SocketInputStream.read(Unknown Source)
at sun.nio.ch.ChannelInputStream.read(Unknown Source)
at java.io.ObjectInputStream$PeekInputStream.read(Unknown Source)
at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at Server.ReceiveObject(Server.java:32)
at Server.main(Server.java:24)
服务器已启动
连接Etablished:/127.0.0.1:57896
线程“main”java.io.IOException中的异常:Varolan bir bağlantı
uzaktaki bir ana bilgisayar tarafından zorla kapatıldı(现有
连接被远程主机强制关闭)
位于sun.nio.ch.SocketDispatcher.read0(本机方法)
at sun.nio.ch.SocketDispatcher.read(未知源)
位于sun.nio.ch.IOUtil.readIntoNativeBuffer(未知源)
at sun.nio.ch.IOUtil.read(未知源)
位于sun.nio.ch.socketchannel.read(未知来源)
位于sun.nio.ch.SocketAdaptor$SocketInputStream.read(未知源)
at sun.nio.ch.ChannelInputStream.read(未知源)
位于java.io.ObjectInputStream$PeekInputStream.read(未知源)
在java.io.ObjectInputStream$PeekInputStream.readFully处(未知源)
位于java.io.ObjectInputStream$BlockDataInputStream.readShort(未知源)
位于java.io.ObjectInputStream.readStreamHeader(未知源)
位于java.io.ObjectInputStream。(未知源)
在Server.ReceiveObject上(Server.java:32)
位于Server.main(Server.java:24)
您的客户端从未关闭套接字,因此当它退出时,操作系统会重置它。您的客户端从未关闭套接字,因此当它退出时,操作系统会重置它。您可以查看您可以查看谢谢您,它工作了这么多,但如果您也帮我,我会得到空值,我会很高兴再次帮助你如何?没有信息,谁能帮助你?你得到一个空值是为了什么?用什么密码?注意:你的Person
构造函数什么都不做。我将这个代码公共字符串添加到字符串(){return“Name=“+Name+”;Age=“+Age;}非常感谢你,它工作了这么多,但是我得到了空值,如果你也帮我,我将非常高兴thx再次帮助你如何?没有信息,谁能帮助你?你得到一个空值是为了什么?用什么密码?注意,您的Person
构造函数不执行任何操作。我将此代码公共字符串添加到字符串(){return“Name=“+Name+”;Age=“+Age;”