用固定端口发送udp数据报 在Socket编程中,用Sendto()发送UDP数据包时,只需创建一个套节字,并且指定目标主机的IP和端口号,不用把自己的IP和端口bind()到套节字,因此发送的端口是系统随机分配的,但我想用固定端口发送UDP包怎么办?如:从本机端口4001发送数据到远程终端(IPEndPoint) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 UDP客户端的Socket也可以Bind, 不信你试试 IPEndPoint iep = new IPEndPoint(IPAddress.Any, 4001); socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); socket.Bind(iep);socket.SendTo(.....100%可行, 你得试一下IPAddress.Any有没有问题(或者得指定IP) internal class UDPClient { /// <summary> /// 本地绑定端口 /// </summary> private int UdpBindPort; private UdpClient Client; /// <summary> /// 远程通信点 /// </summary> private IPEndPoint Point = new IPEndPoint(IPAddress.Parse("192.168.1.1"), 10000); private bool m_IsInit = false; /// <summary> /// 是否初始化 /// </summary> public bool IsInit { get { return m_IsInit; } } /// <summary> /// 初始化通信模块 /// </summary> /// <param name="IP">IP地址</param> /// <param name="BindPort">本地绑定端口</param> /// <param name="RemotePort">远程端口</param> public void Init(string IP, int BindPort, int RemotePort) { Point.Address = IPAddress.Parse(IP); Point.Port = RemotePort; UdpBindPort = BindPort; byte[] SendArr = ASCIIEncoding.ASCII.GetBytes(string.Format("init {0}", m_ m_IsInit = true } /// <summary> /// 发送数据 /// </summary> /// <param name="Port">端口</param> /// <param name="vData">发送的二进制数据</param> /// <returns></returns> private bool SendData(int Port, Byte[] vData) { try { Client = new UdpClient(Port); Client.Connect(Point); } catch(Exception ex) { Console.WriteLine(ex.Message); return false; } Client.Send(vData, vData.Length); Client.Close(); return true; } /// <summary> /// 发送数据 /// </summary> /// <param name="vData">发送的二进制数据</param> /// <returns></returns> public bool SendData(byte[] vData) { if (!m_IsInit) return false; return SendData(UdpBindPort, vData); } } teechart动态绘图问题 gridview控件的标题文本? C# 重绘button问题,获取button显示文字长度与宽度 正则表达式问题 C# 关于隐藏任务栏 创建一个泛型类来实现一个二叉树!看看怎么实现 请大家推荐几本C#方面的英文书(影印版就好了)原版太贵,内容高级一点的,入门的免(谢谢)。 新年快乐!送分1 C#的一个基础问题 dynamic不是Framework4.0的吗,为什么我3.5的项目可以使用? 报表问题
socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
socket.Bind(iep);socket.SendTo(.....100%可行, 你得试一下IPAddress.Any有没有问题(或者得指定IP)
internal class UDPClient
{
/// <summary>
/// 本地绑定端口
/// </summary>
private int UdpBindPort; private UdpClient Client;
/// <summary>
/// 远程通信点
/// </summary>
private IPEndPoint Point = new IPEndPoint(IPAddress.Parse("192.168.1.1"), 10000);
private bool m_IsInit = false; /// <summary>
/// 是否初始化
/// </summary>
public bool IsInit
{
get { return m_IsInit; }
} /// <summary>
/// 初始化通信模块
/// </summary>
/// <param name="IP">IP地址</param>
/// <param name="BindPort">本地绑定端口</param>
/// <param name="RemotePort">远程端口</param>
public void Init(string IP, int BindPort, int RemotePort)
{
Point.Address = IPAddress.Parse(IP); Point.Port = RemotePort; UdpBindPort = BindPort; byte[] SendArr = ASCIIEncoding.ASCII.GetBytes(string.Format("init {0}", m_ m_IsInit = true
} /// <summary>
/// 发送数据
/// </summary>
/// <param name="Port">端口</param>
/// <param name="vData">发送的二进制数据</param>
/// <returns></returns>
private bool SendData(int Port, Byte[] vData)
{ try
{
Client = new UdpClient(Port);
Client.Connect(Point);
}
catch(Exception ex) {
Console.WriteLine(ex.Message);
return false;
} Client.Send(vData, vData.Length); Client.Close();
return true;
} /// <summary>
/// 发送数据
/// </summary>
/// <param name="vData">发送的二进制数据</param>
/// <returns></returns>
public bool SendData(byte[] vData)
{
if (!m_IsInit) return false;
return SendData(UdpBindPort, vData);
}
}