java - 套接字中的问题

标签 java sockets bufferedreader java-server

当我启动服务器和客户端时,服务器无法接收客户端输入的文字。 我希望服务器显示来自客户端的消息。但服务器似乎卡在“bf.readLine()”上。我不知道为什么... 按照代码...

服务器代码:

ServerSocket ss = new ServerSocket(11111);
System.out.println("current port:"+ss.getLocalPort());
Socket s = ss.accept();

System.out.println("remote port:"+s.getPort());

BufferedReader bf = new BufferedReader(new InputStreamReader(s.getInputStream()));

while(true)
{
    String str = bf.readLine();
    System.out.print(s.getPort()+": ");
    System.out.println(str);
    if ("bye".equals(str))
        break;
}

然后是客户端代码:

Socket s = new Socket("127.0.0.1",11111);
System.out.println("connected to remote server:"+s.getPort());
System.out.println("My port:"+s.getLocalPort());

PrintWriter pw = new PrintWriter(s.getOutputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));

Scanner in = new Scanner(System.in);

while (true)
{
    System.out.print("I said: ");
    String l = in.next();

    pw.write(l);
    pw.flush();
    System.out.println("Echo~~~~"+l);
}

最佳答案

您使用 write() 写入字节,但使用 readln() 读取。 Readln 需要在末尾有一个“\n”。

关于java - 套接字中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5617120/

相关文章:

java - 按 ArrayList 中的随机索引移动

javap -l 选项无法显示行号信息

java - 与 Logstash 一起使用时在 log4j 上被阻止

sockets - 使用GetQueuedCompletionStatus和ERROR_MORE_DATA的套接字

linux - 为什么 UDP 中的丢包与数据包数量和带宽利用率相关

java - 如何在java中读取文本文件的特定部分

java - 为什么bufferedreader和scanner的输出不同?

java - 如何为GWT编译器指定参数 "extra"的相对路径?

c - 从 Linux 内核向 LOOPBACK 发送小的 UDP 数据包

在方法之间传递的 Java 套接字