C#套接字问题---初学者的困惑

wqawm012498 2005-10-20 10:20:38
各位高手:

小弟最近刚刚开始学习C#网络编程,遇到了一个问题,在此请教一下,望各方神圣不吝赐教!

大家都知道,在编写服务器段程序时(无论是tcp还是udp),我们需要将一个套接字绑定到一个IPEndPoint对象(这个对象包括了IpAddress和Port)。但是,客户端的Socket就直接调用connect函数(tcp)或者recievefrom函数等等便可以与服务器进行通信,而无需绑定到一个IpEndPoint!

我对此感到很困惑,为什么客户端的Socket不能绑定到一个IpEndPoint对象呢?(比如说客户端也想利用特定的端口和IP地址于服务器进行通信时,怎么办?)
...全文
144 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wqawm 2005-10-31
  • 打赏
  • 举报
回复
to wqawm012498(学无止境):

拜托老兄你头脑清楚一点儿,所谓“UDP服务器”如果不进行本地绑定,它怎么知道要监听哪个端口啊?!不会只要是发到本机的UDP数据报不分青红皂白统统接收吧?!

当然了,你也可以不绑定本地IpEndPoint,但是有个前提,一定要先用此Socket进行一次SendTo,这样系统就会自动为此Socket随机分配一个没有使用的Port。

哈哈,这回再试试看...
holym 2005-10-31
  • 打赏
  • 举报
回复
mark
wqawm012498 2005-10-20
  • 打赏
  • 举报
回复
但是,对于UDP,所谓的“服务器端”(就是在开始时接受数据的一端)的socket可不可以不绑定到一个IpEndPoint,而直接recievefrom呢?
Example945 2005-10-20
  • 打赏
  • 举报
回复
可以把端口号换一下吧!
lookfeng 2005-10-20
  • 打赏
  • 举报
回复
Socket client = new Socket(...);
client.Bind(localEndPoint);
client.Connect(...);


除非需要使用特定的本地终结点,否则不必在使用 Connect 方法之前调用 Bind。对无连接和面向连接的协议都可以使用 Bind 方法。
wqawm012498 2005-10-20
  • 打赏
  • 举报
回复
但是如果机器装了多块网卡,那不就有多个IP了么?难道在客户端不能指定IP么?
自由程序员 2005-10-20
  • 打赏
  • 举报
回复
运行这个程序时IP是定了的,变什么啊
端口是可以设别的。

110,536

社区成员

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

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

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