我已经在Java中创建了TCP服务器,并在Ruby中创建了TCP客户端。问题是我无法在同一连接中发送超过1条消息,只发送第一条消息,而另一条消息未发送。向同一连接中的TCP服务器发送超过1条消息
这里是Java代码
package com.roun512.tcpserver;
import java.io.*;
import java.net.*;
public class Program {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
String clientSentence;
String capitalizedSentence;
ServerSocket Socket = new ServerSocket(6789);
while(true)
{
Socket connection = Socket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connection.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connection.getOutputStream());
clientSentence = inFromClient.readLine();
System.out.println(clientSentence);
capitalizedSentence = clientSentence + '\n';
outToClient.writeBytes(capitalizedSentence);
System.out.println("Sent msg");
}
}
}
这里是客户端代码
Client.rb
require 'socket'
class Client
def initialize()
server = TCPSocket.open("127.0.0.1", 6789)
if server.nil?
puts "error"
else
puts "connected"
end
server.puts("Hello\r\n")
sleep 2
server.puts("There\r\n")
server.close
end
end
Client.new()
我只接收Hello
。我尝试了许多其他方法,但都没有成功。
所以我的问题是如何在一个单一连接发送超过1条消息,任何帮助,将不胜感激:)
提前感谢!
您的服务器代码甚至不会尝试读取多个输入行。你期望它对第二行做什么?而且,TCP流不会被分解为“消息”。这是一个流,这意味着你将字节放在一端,并按照相同的顺序从另一端获取相同的字节,但是没有消息边界的概念。 – 2015-04-02 02:38:51
我试过战地服务器上使用rcon的客户端,它给出了相同的结果......所以它不是服务器。哦,服务器仅用于测试目的:) – roun512 2015-04-02 02:47:58