Java 不从套接字对等方读取行
编辑:这是一个研究得很差的问题,在我赶时间的时候写的。它与socket.accept()无关-请参阅下面的接受答案。请不要再投反对票 我是套接字编程新手,在我的玩具“服务器”课程中,我没有从同行那里得到任何线索:Java 不从套接字对等方读取行,java,sockets,Java,Sockets,编辑:这是一个研究得很差的问题,在我赶时间的时候写的。它与socket.accept()无关-请参阅下面的接受答案。请不要再投反对票 我是套接字编程新手,在我的玩具“服务器”课程中,我没有从同行那里得到任何线索: public class Server { private ServerSocket myServerSocket; String messageFromClient=null; private void startServer(){ try{ myServerSock
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总而言之,这是一个非常草率的调查和提问。我的观点是——我当时很匆忙,这不是我问过的最好的问题。请不要再投反对票了。