【发布时间】:2017-01-05 14:40:22
【问题描述】:
我需要在我的应用程序中使用 udp 和 tcp 连接,TcpClient/TcpListener 很少处于活动状态,但 udp 将是主要用途。
这是服务器代码:
static void Main(string[] args)
{
TcpListener listener = new TcpListener(IPAddress.Any, 25655);
listener.Start();
Socket sck = listener.AcceptTcpClient().Client;
UdpClient udpServer = new UdpClient(1100);
IPEndPoint remoteEP = new IPEndPoint(IPAddress.Any, 0);
var data = udpServer.Receive(ref remoteEP);
string result = Encoding.UTF8.GetString(data);
Console.WriteLine(result);
Console.Read();
}
这是客户端:
static void Main(string[] args)
{
TcpClient client = new TcpClient("127.0.0.1", 25655);
Socket sck = client.Client;
UdpClient udpclient = new UdpClient();
IPEndPoint ep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1100); // endpoint where server is listening
udpclient.Connect(ep);
byte[] data = UTF8Encoding.UTF8.GetBytes("Hello");
udpclient.Send(data,data.Length);
}
我首先建立 Tcp 连接,然后我尝试连接并将数据从客户端发送到服务器。
从我添加的断点,我可以看到 Tcp 部分正常工作,客户端完成程序但在服务器中,它挂在接收部分 var data = udpServer.Receive(ref remoteEP);
就像没有数据到达..当我删除 tcp 代码部分(从服务器和客户端的前 2 行)它工作得很好,显示结果消息。
有谁知道为什么我无法从客户端获取数据?
提前致谢。
【问题讨论】:
-
虽然我没有直接回答您的问题,但我想让您了解 WCF,它使使用 Tcp 和其他消息传递标准变得异常容易。 msdn.microsoft.com/en-us/library/ee354381.aspx
标签: c# sockets tcp network-programming udp