C语言中的TCP客户端和Java语言中的服务器

C语言中的TCP客户端和Java语言中的服务器,java,c,tcp,client-server,Java,C,Tcp,Client Server,我想与两个应用程序通信:一个C语言的客户机用TCP向服务器发送消息,另一个Java语言的服务器接收消息并发送确认 这是客户端(代码是线程): n=读取(sockfd,缓冲区,255);客户端正在等待响应,而对于服务器,消息永远不会结束,因此它不会使用PrintStream发送响应 如果我删除这些行: bzero(buffer,256); n = read(sockfd,buffer,255); if (n < 0) { error("ERROR reading from socket"

我想与两个应用程序通信:一个C语言的客户机用TCP向服务器发送消息,另一个Java语言的服务器接收消息并发送确认

这是客户端(代码是线程):

n=读取(sockfd,缓冲区,255);客户端正在等待响应,而对于服务器,消息永远不会结束,因此它不会使用PrintStream发送响应

如果我删除这些行:

bzero(buffer,256);
n = read(sockfd,buffer,255);
if (n < 0) {
  error("ERROR reading from socket");
}
printf("Message from the server : %s\n",buffer);
bzero(缓冲区,256);
n=读取(sockfd,缓冲区,255);
if(n<0){
错误(“从套接字读取错误”);
}
printf(“来自服务器的消息:%s\n”,缓冲区);
服务器知道消息已完成,但客户端无法接收响应

如何解决这个问题


感谢您

in.readLine()在流中等待NL、CR或CR+NL。确保在客户端消息中发送该消息。

请更新问题:您将什么传递给tcp_客户端()?确切地说,应该发送的所有字符。最后,客户端发送的消息将是一个字符,因此BufferedReader read()函数就足够了。谢谢你的帮助:)
try {
    int port = 9015;
    ServerSocket server=new ServerSocket(port);
    System.out.println("Server binded at "+((server.getInetAddress()).getLocalHost()).getHostAddress()+":"+port);
    System.out.println("Run the Client");

    while (true) {
        Socket socket=server.accept();
        BufferedReader in= new BufferedReader(new InputStreamReader(socket.getInputStream()));
        System.out.println(in.readLine());
        PrintStream out=new PrintStream(socket.getOutputStream());
        out.print("Welcome by server\n");
        out.flush();
        out.close();
        in.close();
        System.out.println("finished");
    }
} catch(Exception err) {
    System.err.println("* err"+err);
}
bzero(buffer,256);
n = read(sockfd,buffer,255);
if (n < 0) {
  error("ERROR reading from socket");
}
printf("Message from the server : %s\n",buffer);