简体   繁体   English

为什么使用Java套接字创建的服务器不打印从客户端发送的数据(如果客户端终止,则显示该消息)?

[英]Why server created using java socket doesn't not print data send from client (it dislays if client terminate)?

In example below I created one server which will only print whatever client is writing in a socket. 在下面的示例中,我创建了一个服务器,该服务器将仅打印客户端在套接字中写入的内容。 But I am not getting output as client enter data. 但是当客户端输入数据时,我没有得到输出。 If client terminate then I can see all the data client inserted in outputstream. 如果客户端终止,那么我可以看到所有在输出流中插入的数据客户端。 I am taking input from console at client and then write that data to server socket. 我从客户端的控制台获取输入,然后将该数据写入服务器套接字。

Server code: 服务器代码:

   public class server {
public static void main(String[] args) throws Exception {
    System.out.println("waiting");
    ServerSocket s = new ServerSocket(9999);
    Socket stemp = s.accept();
    System.out.println("read comp");
    InputStream is = stemp.getInputStream();
    InputStreamReader ir = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(ir);

    while(true)
    {
        String str = br.readLine();
        if(str!=null)
        {
            System.out.println(str);
        }
        if(str.contains("exit"))
        {
            break;
        }
    }
    stemp.close();
    ir.close();
    is.close();
    br.close();
}
}

Client code: 客户代码:

public class client {
    public static void main(String[] args) throws Exception {
        String ip ="127.0.0.1";
        int port = 9999;
        Socket s1 = new Socket(ip, port);
        OutputStream os = s1.getOutputStream();
        OutputStreamWriter ow = new OutputStreamWriter(os);

        BufferedWriter pw = new BufferedWriter(ow);
        pw.write("I am ready");
        Scanner s = new Scanner(System.in);
        String str = s.nextLine();
        System.out.println(str);
        while(!str.contains("exit"))
        {
            pw.write(str);
            pw.flush();
            str = s.nextLine();
        }
        pw.close();
        os.close();
        ow.close();
        s1.close();
    }
}

In server , br.readLine(); serverbr.readLine(); is used, waiting for end-of-line. 用于等待行尾。

In client, you have to send the eol in pw.write( str + '\\n' ); 在客户端中,您必须在pw.write( str + '\\n' );发送eol pw.write( str + '\\n' ); .

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 无法将数据从Java Socket Server发送到NodeJS客户端 - Can't send data from Java Socket Server to NodeJS client Java套接字将数据从客户端发送到服务器 - Java socket send data from client to server 将数据从Java Socket Server发送到Python客户端 - Send data from Java Socket Server to Python client 客户端/服务器套接字Java(模式MVC)未向客户端发送正确的信息 - Client/Server Socket Java (pattern MVC) doesn't send correct information to the Client 使用套接字将服务器JAVA的图像发送到android客户端 - send image from server JAVA to android client using socket 使用Java中的套接字编程将数据流从客户端程序(在VM中运行)发送到服务器程序(在Host OS上) - Send stream of Data from client program (running in VM) to server program(on Host OS) using socket programming in Java 为什么Java FileOutputStream的write()或flush()不能使NFS客户端真正将数据发送到NFS服务器? - Why java FileOutputStream's write() or flush() doesn't make NFS client really send data to NFS server? Java套接字客户端无法从节点服务器接收数据 - Java socket client can't receive data from Node Server 从服务器套接字java中的客户端获取数据 - get data from client in server socket java 套接字的ArrayList无法将消息发送到客户端-Java - ArrayList of Socket doesn't work to send message to Client - Java
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM