Java 不从套接字对等方读取行

Java 不从套接字对等方读取行,java,sockets,Java,Sockets,编辑:这是一个研究得很差的问题,在我赶时间的时候写的。它与socket.accept()无关-请参阅下面的接受答案。请不要再投反对票 我是套接字编程新手,在我的玩具“服务器”课程中,我没有从同行那里得到任何线索: public class Server { private ServerSocket myServerSocket; String messageFromClient=null; private void startServer(){ try{ myServerSock

编辑:这是一个研究得很差的问题,在我赶时间的时候写的。它与socket.accept()无关-请参阅下面的接受答案。请不要再投反对票

我是套接字编程新手,在我的玩具“服务器”课程中,我没有从同行那里得到任何线索:

public class Server {
private ServerSocket myServerSocket;
String messageFromClient=null;
private void startServer(){
    try{
    myServerSocket=new ServerSocket(2000);
     int portUsed= myServerSocket.getLocalPort();
     System.out.println(portUsed);
    Socket mySocket=myServerSocket.accept();
    System.out.println("accepted");
    InputStreamReader streamFromClient =  new InputStreamReader(mySocket.getInputStream());
    BufferedReader streamReader= new BufferedReader(streamFromClient);
    messageFromClient=streamReader.readLine();
    System.out.println("current message:"+messageFromClient);
    if(messageFromClient!=null){
        PrintStream ps = new PrintStream(mySocket.getOutputStream());
        ps.print("Thank you client, I gratefully received from your message-hi from server!");
    }
    }
    catch(Exception e){
        e.printStackTrace();
    }

}
为完整起见,以下是客户端类:

 public class Client {
@SuppressWarnings("resource")
private void startClient(){
    try{
    Socket socket = new Socket("localhost",2000);
    PrintStream ps = new PrintStream(socket.getOutputStream());
    ps.print("hi from client");
    InputStreamReader inputStreamReader=new InputStreamReader(socket.getInputStream());
    BufferedReader reader=new BufferedReader(inputStreamReader);
    System.out.println("From Server:"+reader.readLine());
    }
    catch(Exception e){
        e.printStackTrace();
    }

}

它们都有主要的方法。非常感谢您的帮助,谢谢

您需要使用
println
而不是所有
print
s。作为一种解释,当您的服务器正在等待行尾字符时,您的客户机从未发送过。服务器发送消息时也是如此。

是否打印出任何异常?您是否在服务器运行时启动客户端?如果您认为这是异常,则应该有来自
catch
的堆栈跟踪。如果它只是挂在
accept
上,那么可能您还没有运行客户端。首先运行服务器,然后运行客户端。1。检查服务器是否在该端口上运行。您可以检查netstat-n命令。2) 如果服务器在特定端口上运行,请检查您的客户端是否有权连接到该端口。e、 g.telnet ip port 3)在客户端类中,创建套接字后,再添加一个System.out.println(“已连接”)@如果这个答案是正确的,那么你的标题和整个问题都是错误的。您确实超出了
accept()
。我在调试中运行时犯了一个错误,我相信我只是错误地运行了服务器。抱歉的错误happen@EShindler总而言之,这是一个非常草率的调查和提问。我的观点是——我当时很匆忙,这不是我问过的最好的问题。请不要再投反对票了。