首页 文章

连接拒绝从客户端到服务器

提问于
浏览
-1

我正在学习Java中的套接字,我只是错过了如何从服务器接收回来的响应 .

How to send string array objectHow to send and receive serialized object in socket channel之后,我试图让用户根据自己的选择选择:

1 - 2 - 3 - 4

然后我想拆分并将它们作为一个数组发送到服务器,服务器应该发送回用户选择的数量 .

例如,如果用户选择

2 3 4 1 2 3 4 1

服务器应该返回

8

服务器发送响应很好,但在客户端我收到错误:

线程“main”中的异常java.net.ConnectException:连接被拒绝:在java.net.DualStackPocket上保存的java.net.DualStackPlainSocketImpl.socketConnect(未知来源)中的java.net.DualStackPlainSocketImpl.connect0(本机方法)连接( java.net.SocksSocketImpl.connect上java.net.PlainSocketImpl.connect(未知来源)java.net.AbstractPlainSocketImpl.connect(未知来源)的java.net.AbstractPlainSocketImpl.connectToAddress(未知来源)(未知来源)来自java.net.Socket.connect(未知源)的java.net.Socket.connect(未知源)位于java.net.Socket . (未知源),位于ClientClass的java.net.Socket . (未知源) . 主(ClientClass.java:26)

我不确定为什么会这个问题 . 有帮助吗?

我的客户:

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.Scanner;

public class ClientClass {

    public static void main(String args[]) throws IOException, ClassNotFoundException 
    {
        // take order and convert it to array of choices
        Scanner myScanner = new Scanner(System.in); // take from user
        System.out.println("Enter all your choices seperated by space:");
        System.out.println("Choices are: 1- 2- 3- 4");
        String orderString = myScanner.next();
        orderString += myScanner.nextLine();
        String orderArray[] = orderString.split(" ");

        // send request to server
        Socket mySocket = new Socket("127.0.0.1", 4444); // create a socket
        ObjectOutputStream out = new ObjectOutputStream(mySocket.getOutputStream());
        out.writeObject(orderArray);  

       // get response from server
       InputStream is = mySocket.getInputStream();
       InputStreamReader isr = new InputStreamReader(is);
       BufferedReader br = new BufferedReader(isr);
       String message = br.readLine();
       System.out.println("Message received from the server : " +message);

    }
}

我的服务器:

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintStream;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.channels.SocketChannel;
import java.util.Scanner;

public class ServerClass {

    public static void main(String args[]) throws IOException, ClassNotFoundException
    {
        // receive
        ServerSocket myServerSocket = new ServerSocket(4444); // create a server socket
        Socket mySimpleSocket = myServerSocket.accept(); // accept requests
        ObjectInputStream ois = new ObjectInputStream(mySimpleSocket.getInputStream());
        String[] choices = (String[]) ois.readObject();


       // send back response
       OutputStream os = mySimpleSocket.getOutputStream();
       OutputStreamWriter osw = new OutputStreamWriter(os);
       BufferedWriter bw = new BufferedWriter(osw);
       bw.write(choices.length);
       System.out.println("Message sent to the client is "+choices.length);
       bw.flush();

    }
}

1 回答

  • 0

    服务器正在发送响应

    垃圾 . 服务器甚至没有获得传入连接,更不用说读取请求,更不用说发送响应了 .

    但在客户端我收到错误:

    Exception in thread "main" java.net.ConnectException: Connection refused: connect at
    

    根据这个证据,服务器甚至没有运行 . 当然不能在与客户端相同的主机上运行,这是 new Socket("127.0.0.1", 4444) 所要求的 .

相关问题