用通信程序测试收发数据都可以,连接硬件之后只能发送数据但是收不到数据,与防火墙也没关系。(硬件接收到一条数据后立马返回一个数据中间只有一毫秒左右吧,会不会因为瞬间时间太短没接收到?)
///
/// 发送数据
///
///
void receive_msgs(string s)
{
try
{
//发送数据
EndPoint end = new IPEndPoint(IPAddress.Parse("192.168.1.251"), 7);
if (s.Length == 0)
throw new Exception("将16进制字符串转换成字节数组时出错,错误信息:被转换的字符串长度为0。");
s = s.Replace(" ", "");
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i += 2)
buffer[i / 2] = Convert.ToByte(s.Substring(i, 2), 16);
socket.SendTo(buffer, end);
//线程接收数据
Thread thread = new Thread(receive_msg);
thread.IsBackground = true;
thread.Start(socket);
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// 接收数据
/// </summary>
/// <param name="o"></param>
void receive_msg(object o)
{
Socket cliet = o as Socket;
while (true)
{
try
{
EndPoint point = new IPEndPoint(IPAddress.Parse("192.168.1.251"), 7);
byte[] vs = new byte[32];
while (true)
{
int r = cliet.Receive(vs);
string msg = Encoding.UTF8.GetString(vs, 0, r);
textBox4.AppendText(socket.RemoteEndPoint.ToString() + ":" + msg + "\r\n");
}
}
catch (Exception)
{
cliet.Close();
}
}
}