2017-10-19 5 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)

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)에 필요한 클라이언트와 동일한 호스트에서 실행되고 있지는 않습니다.

관련 문제