我有一个Sockets
的客户端服务器应用程序。它还没有优化,但这不是问题。每当我发送string
喜欢"测试"另一方接收" T \ 0 \ 0 \ 0"因此,只有string
的第一个字母和数组的其余部分,保存在哪里,填充0' s。我尝试改变所有类型的值,但似乎无法弄清楚它为什么这样做。奇怪的是,在我发送字符串之前它仍然是整个string
但是只要它收到它的第一个字母。有人能帮助我吗?
发送
public void sendData(Socket sendingSocket, String message)
{
if (sendingSocket == m_workerSocket[0])
{
byte[] byData = System.Text.Encoding.ASCII.GetBytes(message);
m_workerSocket[1].Send(byData);
}
}
接收
public void OnDataReceived(IAsyncResult asyn)
{
try
{
SocketPacket theSockId = (SocketPacket)asyn.AsyncState;
int iRx = theSockId.thisSocket.EndReceive(asyn);
char[] chars = new char[iRx + 15]; //Added this to force the array length for test purposes
Decoder d = Encoding.UTF8.GetDecoder();
int charLen = d.GetChars(theSockId.dataBuffer, 0, iRx, chars, 0);
//int bytesRead = nwStream.Read(theSockId.dataBuffer, 0, client.ReceiveBufferSize);
String szData = new String(chars);
Console.WriteLine(szData);
}
编辑=============================
在发送部分,如果我制动点
m_workerSocket[1].Send(byData);
byData包含整个字符串。所以它与接收端有关,但我不知道是什么