2017-10-19 212 views
-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

服務器發送響應正常,但在客戶端,我得到錯誤:

Exception in thread "main" java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.(Unknown Source) at java.net.Socket.(Unknown Source) at ClientClass.main(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(); 

    } 
} 

回答

0

server is sending response fine

垃圾。服務器甚至沒有獲得傳入連接,更不用說讀取請求了,更不用說發送響應了。

but on the client side I get error:

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

在這方面的證據,服務器甚至沒有運行。當然不會與客戶端在同一個主機上運行,​​這是new Socket("127.0.0.1", 4444)所要求的。

相關問題