2017-10-19 22 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

Serverは

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)

Iをなぜこの問題か分かりません。どんな助け?

私のクライアント:

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)が必要です。

関連する問題