用固定端口发送udp数据报

裸奔的蜗牛 2011-04-27 02:43:59
在Socket编程中,用Sendto()发送UDP数据包时,只需创建一个套节字,并且指定目标主机的IP和端口号,不用把自己的IP和端口bind()到套节字,因此发送的端口是系统随机分配的,但我想用固定端口发送UDP包怎么办?

如:从本机端口4001发送数据到远程终端(IPEndPoint)
...全文
543 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
niaoked 2011-04-27
  • 打赏
  • 举报
回复

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);
}
}
visir 2011-04-27
  • 打赏
  • 举报
回复
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)
visir 2011-04-27
  • 打赏
  • 举报
回复
如果多网卡, 你得先选定一个IP
visir 2011-04-27
  • 打赏
  • 举报
回复
UDP客户端的Socket也可以Bind, 不信你试试
裸奔的蜗牛 2011-04-27
  • 打赏
  • 举报
回复
分不够可以加 速度来人啊
裸奔的蜗牛 2011-04-27
  • 打赏
  • 举报
回复
居然没人回应 ! 我好着急啊

111,096

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧