2016-07-29 237 views
-4

这是一个简单的客户端 - 服务器程序在客户端发送一个文本和服务器显示它的console.This是我的代码:客户端无法发送消息

MyServer的

import java.io.*; 
import java.net.*; 
public class MyServer { 
public static void main(String args[]) throws IOException 
{ 
    ServerSocket socket=new ServerSocket(4444); 
    Socket s=socket.accept(); 
    BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream())); 

String text; 
while( (text=in.readLine())!=null) 
    { System.out.println(text); 
    } 

} 

MyClient

import java.io.*; 
import java.net.*; 


public class MyClient { 
public static void main(String args[]) throws IOException 
{ Socket socket=new Socket("localhost",4444); 
PrintWriter out=new PrintWriter(socket.getOutputStream()); 
out.println("c:/users/pinder/desktop/happy.txt"); 



} 
} 

唯一的例外发生在的readLine()声明MyServer的类。 这是我得到异常:

Exception in thread "main" java.net.SocketException: Connection reset 
at java.net.SocketInputStream.read(SocketInputStream.java:209) 
at java.net.SocketInputStream.read(SocketInputStream.java:141) 
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) 
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) 
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) 
at java.io.InputStreamReader.read(InputStreamReader.java:184) 
at java.io.BufferedReader.fill(BufferedReader.java:161) 
at java.io.BufferedReader.readLine(BufferedReader.java:324) 
at java.io.BufferedReader.readLine(BufferedReader.java:389) 
at networking.MyServer.main(MyServer.java:25) 
+2

为什么这个代码不工作的问题是题外话.... –

+2

该计划是做你希望它做什么。你没有解释错误是什么。 –

+0

真的吗?我期望它打印客户端发送的消息,但它不会。我已经提到了错误 –

回答

2

一个SocketExceptionIOException(这是你的main()方法throws子句中。因为没有关闭连接正确读者抛出这个错误,这是通过启动打印。

如果close()当另一端读你不会得到这个错误的连接插座。如

public class MyServer { 
    public static void main(String args[]) throws IOException { 
     try (ServerSocket socket = new ServerSocket(4444); 
      Socket s = socket.accept(); 
      BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()))) { 

      String text; 
      while ((text = in.readLine()) != null) { 
       System.out.println(text); 
      } 
     } 
    } 
} 
public class MyClient { 
    public static void main(String[] args) throws IOException { 
     try (Socket socket = new Socket("localhost", 4444); 
      PrintWriter out = new PrintWriter(socket.getOutputStream())) { 
      out.println("c:/users/pinder/desktop/happy.txt"); 
     } 
    } 
} 

如果我运行的MyServer,然后MyClient,服务器打印

c:/users/pinder/desktop/happy.txt 
+0

是的,它工作。谢谢! –

相关问题