.NET帮助使用TCP类

时间:2016-09-07 12:09:46

标签: c# tcp network-programming bytebuffer data-representation

我正在尝试学习网络编程,而我正在尝试创建TCP服务器和TCP客户端。

服务器将启动并侦听连接。客户端将连接并将字符串发送到服务器。 然后服务器将使用包含接收到的字符串的字符串进行回复。

我面临的问题是,第一次尝试这是有效的,但在此之后,客户端有时会收到一个空的回复。

以下是服务器的代码:

package com.androiddepends;

import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import android.util.Log;

public class HelloWorld extends ReactContextBaseJavaModule {

    public HelloWorld(ReactApplicationContext reactContext) {
        super(reactContext);
    }

    @Override
    public String getName() {
        return "HelloWorld";
    } 

    @ReactMethod
    public void openWifiSettings() {
    Intent intent = new Intent(Intent.ACTION_WIFI_SETTINGS);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}
}

客户的代码:

public void handlerThread()
{
 TcpClient TcpClient = clients[clients.Count - 1]; 
 NetworkStream networkStream = TcpClient.GetStream();
 int i = -1;
 while (TcpClient.Connected )
 {
  Byte[] data = new Byte[1024];
  if ((i=networkStream.Read(data, 0, data.Length)) != 0)
  {
   string incomingMessage = Encoding.ASCII.GetString(data);
   Debug.WriteLine("DDB Server incomingMessage: " + incomingMessage);
   this.Invoke((MethodInvoker)(() => lbMessage.Items.Add("Message received is: " + incomingMessage)));
   // Send back a response.
   data = new Byte[1024];
   string outMessage = string.Empty;
   outMessage = "Recieved msg: " + incomingMessage;
   data = System.Text.Encoding.ASCII.GetBytes(outMessage);
   networkStream.Write(data, 0, data.Length);
   Debug.WriteLine("DDB Server Reply: " + outMessage);
   this.Invoke((MethodInvoker)(() => lblStatus.Text = "Sent reply!"));
  }
 }
}

我在使用Debug.WriteLine()时注意到了第一次运行正确显示的消息。之后,消息彼此相邻(就好像我使用的是Debug.Write())。 Behavior 可能是消息的字节表示被破坏了(例如返回字符或其他东西)?

0 个答案:

没有答案