客户端/服务器应用程序 - 丢失字节

Jak*_*kub 5 c# java sockets

我用Java创建了一个客户端,我只想将一些数据发送到我在C#中的服务器.

问题是如果我在客户端写例如你好,我只得到第一个字母.在字节数组中只有一个元素.

我猜服务器端存在一些问题,因为在我的JAVA服务器中工作正常,所以JAVA中的客户端工作正常.

有人看到有什么问题吗?

先感谢您.

Nes*_*zon 2

问题可能出在java端,因为你的监听器工作正常。我将您的侦听器代码复制粘贴到测试应用程序中。然后我创建了另一个测试应用程序并发送了问候语,我完全听了它。

public static  void sender()
{
  TcpClient client = new TcpClient();
  IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("192.168.2.236"), 30000);
  client.Connect(serverEndPoint);
  NetworkStream clientStream = client.GetStream();
  ASCIIEncoding encoder = new ASCIIEncoding();
  byte[] buffer = encoder.GetBytes("Hello Server!");

  clientStream.Write(buffer, 0, buffer.Length);
  clientStream.Flush();
}


Connection accepted from 192.168.2.236:22811
Recieved...
Hello Server!
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这可能是更好的倾听者。

public void listener()
    {
  TcpListener tcpListener = new TcpListener(IPAddress.Any, 30000);
  tcpListener.Start();

  TcpClient tcpClient = tcpListener.AcceptTcpClient();
  NetworkStream clientStream = tcpClient.GetStream();

  byte[] message = new byte[4096];
  int bytesRead;

  while (true)
  {
    bytesRead = 0;

    try
    {
      //blocks until a client sends a message
      bytesRead = clientStream.Read(message, 0, 4096);
    }
    catch
    {
      //a socket error has occured
      break;
    }

    if (bytesRead == 0)
    {
      //the client has disconnected from the server
      break;
    }

    //message has successfully been received
    ASCIIEncoding encoder = new ASCIIEncoding();
    Console.Write(encoder.GetString(message, 0, bytesRead));
  }

  tcpClient.Close();
}
Run Code Online (Sandbox Code Playgroud)