Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
套接字应用程序中的Java对象发送错误_Java_Sockets_Object_Server_Client - Fatal编程技术网

套接字应用程序中的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

首先,请原谅我的语言不好。我正在用java编写一个服务器客户端应用程序,我正试图向服务器发送一个对象,但我遇到了一个异常,一切看起来都很好,我不明白,有人能帮我吗?这是我的代码 如果我做错了,警告我

服务器

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;”