在同一连接中向 TCP 服务器发送多条消息
Sending more than 1 message to TCP server in same connection
我在 Java 中创建了一个 TCP 服务器,在 Ruby 中创建了一个 TCP 客户端。问题是我无法在同一个连接中发送超过一条消息,只有第一条消息被发送而另一条消息没有发送。
这里是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
。我尝试了很多其他方法,但 none 奏效了。
所以我的问题是如何在单个连接中发送多于 1 条消息,任何帮助将不胜感激:)
提前致谢!
Socket.accept()
读取第一行后等待新连接。
请尝试以下操作:
public static void main(String[] args) throws Exception {
String clientSentence;
String capitalizedSentence;
ServerSocket Socket = new ServerSocket(6789);
while (true)
{
Socket connection = Socket.accept();
while(true)
{
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");
}
}
}
如果有效,请将 while (true)
更改为一些有意义的条件,并且不要忘记在工作完成后关闭连接。
我在 Java 中创建了一个 TCP 服务器,在 Ruby 中创建了一个 TCP 客户端。问题是我无法在同一个连接中发送超过一条消息,只有第一条消息被发送而另一条消息没有发送。
这里是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
。我尝试了很多其他方法,但 none 奏效了。
所以我的问题是如何在单个连接中发送多于 1 条消息,任何帮助将不胜感激:)
提前致谢!
Socket.accept()
读取第一行后等待新连接。
请尝试以下操作:
public static void main(String[] args) throws Exception {
String clientSentence;
String capitalizedSentence;
ServerSocket Socket = new ServerSocket(6789);
while (true)
{
Socket connection = Socket.accept();
while(true)
{
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");
}
}
}
如果有效,请将 while (true)
更改为一些有意义的条件,并且不要忘记在工作完成后关闭连接。