我已经写了一个 TCPClient 程序在我的电脑上运行。它首先启动TCP侦听器以侦听特定端口,然后从多个线程上的多个TCP客户端读取/写入 我能够从客户端读取,但每当我尝试向其发送数据时,程序显示它已发送数据,但客户端没有收到任何内容。
以下是代码:
TcpClient client = listener.AcceptTcpClient();
var childSocketThread = new Thread(() =>
{
if (client.Connected)
{
using (NetworkStream stream = client.GetStream())
{
Console.WriteLine("connected");
byte[] data = new byte[1000];
try
{
if (stream.CanRead)
{
stream.Read(data, 0, 1000);
string dataStr = Encoding.ASCII.GetString(data);
string dataa = dataStr.TrimEnd('\0');
//Console.WriteLine(dataa);
if (dataa.Length > 10)
{
deviceid = ParseRequest(dataa);
byte[] sendnow = Encoding.ASCII.GetBytes(reply[deviceid]);
Array.Clear(data, 0, 1000);
Console.WriteLine("Recieved data: " + dataa);
Console.WriteLine("Sending data");
using (StreamWriter writer = new StreamWriter(stream))
{
writer.AutoFlush = true;
writer.WriteLine(reply[deviceid]);
}
Console.WriteLine(reply[deviceid]);
Console.WriteLine("Sent");
}
Console.WriteLine();
}
}
catch (Exception es)
{
Console.WriteLine(es);
}
}
}
});
childSocketThread.Start();
我使用的服务器设备是PLC。另外,我已经尝试过的事情:
1)使用Socket.Send方法直接发送
2)使用NetworkStream方法直接发送
3)接受TCP连接作为套接字。 (Socket device = listener.AcceptSocket
)。
这些方法似乎都没有发送到设备,即使程序告诉我发送数据没有问题,因为它显示"已发送"在尝试发送数据后。 我从此链接http://www.codeproject.com/Articles/488668/Csharp-TCP-Server下载了另一个程序。他们提供的测试应用程序能够在与在同一台PC上运行的程序相同的端口上发送和接收数据。
我无法就如何诊断获得任何指导,更重要的是解决了这个问题。有什么想法吗?
更新2015-08-10 11:18 a.m。:
该计划的产出如下:
答案 0 :(得分:-1)
我们需要您发布双方代码。不过,这里有一些工作正常的代码,您可以使用它来查看您是否做错了。
http://www.codeproject.com/Articles/1415/Introduction-to-TCP-client-server-in-C