python 带有 C# 客户端的扭曲服务器
python twisted server with C# client
我有一个 python twisted tcp 服务器,我用这个代码传输数据:
self.transport.write("true")
它传输字符串"true"。
并且我计划使用以下代码在我的 C# 客户端中获取它:
byte[] rba = new byte[tcpclnt.ReceiveBufferSize];
stm.Read (rba, 0, (int)tcpclnt.ReceiveBufferSize);
我都尝试使用 UTF8 和默认 (ASCII) 编码将其转换为字符串:
string returndata = Encoding.UTF8.GetString (rba);
和
string returndata = Encoding.Default.GetString (rba);
并尝试这样做:
if ( returndata == "true" )
do something
但它不等于 "true" 的返回数据,我不知道为什么?
谁能帮我理解一下?
byte[] rba = new byte[tcpclnt.ReceiveBufferSize];
var len=stm.Read (rba, 0, (int)tcpclnt.ReceiveBufferSize);
string returndata = Encoding.UTF8.GetString (rba,len);
您正在解码整个缓冲区,而不仅仅是您获得的 4 个字节。 stm.Read
应该 return 4,然后您可以在 GetString
中使用它来告诉它在 4 之后停止。
或者,您也可以这样做:
var returndata = stm.ReadToEnd();
我有一个 python twisted tcp 服务器,我用这个代码传输数据:
self.transport.write("true")
它传输字符串"true"。
并且我计划使用以下代码在我的 C# 客户端中获取它:
byte[] rba = new byte[tcpclnt.ReceiveBufferSize];
stm.Read (rba, 0, (int)tcpclnt.ReceiveBufferSize);
我都尝试使用 UTF8 和默认 (ASCII) 编码将其转换为字符串:
string returndata = Encoding.UTF8.GetString (rba);
和
string returndata = Encoding.Default.GetString (rba);
并尝试这样做:
if ( returndata == "true" )
do something
但它不等于 "true" 的返回数据,我不知道为什么?
谁能帮我理解一下?
byte[] rba = new byte[tcpclnt.ReceiveBufferSize];
var len=stm.Read (rba, 0, (int)tcpclnt.ReceiveBufferSize);
string returndata = Encoding.UTF8.GetString (rba,len);
您正在解码整个缓冲区,而不仅仅是您获得的 4 个字节。 stm.Read
应该 return 4,然后您可以在 GetString
中使用它来告诉它在 4 之后停止。
或者,您也可以这样做:
var returndata = stm.ReadToEnd();