gpt4 book ai didi

java - 服务器未接收 Java 应用程序写入套接字的字节

转载 作者:行者123 更新时间:2023-12-02 08:37:40 25 4
gpt4 key购买 nike

我有以下 Java 套接字客户端应用程序,它将相同的字符串发送到套接字服务器:

import java.net.*;
import java.io.*;

public class ServerClient {
public static void main(String[] args) throws IOException {
System.out.println("Starting a socket server client...");
Socket client = new Socket("XXX.X.XXX.XX", 12001);
BufferedOutputStream stream = new BufferedOutputStream(client.getOutputStream());
String message = "ABC";

BufferedReader inputReader = new BufferedReader(new InputStreamReader(System.in));
String input = null;
while ( true ) {
System.out.print("Would you like to send a message to Server? ");
input = inputReader.readLine();
if ( !input.equals("Y") ) break;

System.out.println("Message to send: " + message);
System.out.println("Message length is: " + message.length());

byte[] messageBytes = message.getBytes("US-ASCII");
stream.write(messageBytes, 0, messageBytes.length);
stream.flush();
}
System.out.println("Shutting down socket server client...");
stream.close();
client.close();
inputReader.close();
}
}

第一次发送消息,服务器接收到该消息;但是,每次我尝试发送此消息时,服务器都没有收到任何内容。消息就这样消失了。我正在成功写入套接字(没有异常(exception)),但管道的另一侧没有任何内容(或者我被告知)。

我无权访问服务器应用程序、日志或代码,因此我想知道您是否可以推荐任何方法来找出服务器未接收后续消息的原因。任何想法将不胜感激!

澄清:

  1. 服务器不需要换行;不然怎么会第一次收到消息呢?作为反复试验,我确实尝试在字符串末尾发送 '\n' 和 "\r\n"以及 0x00 字符 - 但都没有成功。

  2. 我认为刷新是一个问题,所以我尝试了各种输出流类(PrintStream、PrintWriter、FilterOutputStream),但仍然遇到同样的问题。那么,如果“冲洗”是一个问题,它第一次是如何工作的?

最佳答案

其他测试:

1 - 使用网络嗅探器查看网络上实际发生的情况

2 - 使用像 TCP Test Tool 这样的程序将数据发送到服务器并模拟您的程序。 (也可以使用netcat,但它在每行后发送一个换行符)

关于java - 服务器未接收 Java 应用程序写入套接字的字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1029708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com