网络编程基本疑问求解答?

cwj2009 2010-10-28 10:34:21
1、为什么我编程的时候,有用到多线程,TCP的listen监听函数用在主进程,为什么主进程不会被阻塞?

2、UDP服务端的设置是不是设定SOCKADDR_IN 的地址为INADDR_ANY,端口自定义一个。然后与监听套接字bind,最后使用死循环或者阻塞recv函数即可实现接收UDP数据报?recv要定义一个新的SOCKADDR用于接收客户端的信息是吗?

3、UDP客户端的设置是不是设定SOCKADDR_IN 的地址为服务器的地址,端口为服务器监听端口。然后不需要与套接字bind,直接sendto即可向服务器发送UDP数据报?

...全文
82 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2010-10-29
  • 打赏
  • 举报
回复
1、为什么我编程的时候,有用到多线程,TCP的listen监听函数用在主进程,为什么主进程不会被阻塞?
--------------------------------------------
listen不阻塞,accept函数阻塞

2、UDP服务端的设置是不是设定SOCKADDR_IN 的地址为INADDR_ANY,端口自定义一个。然后与监听套接字bind,最后使用死循环或者阻塞recv函数即可实现接收UDP数据报?recv要定义一个新的SOCKADDR用于接收客户端的信息是吗?
-------------------------------------
UDP使用sendto,recvfrom

3、UDP客户端的设置是不是设定SOCKADDR_IN 的地址为服务器的地址,端口为服务器监听端口。然后不需要与套接字bind,直接sendto即可向服务器发送UDP数据报?
-----------------------------------------
UDP客户端可以不需要绑定而直接使用sendto函数,因为内部会自动帮你绑定,如果你用的不是发送函数sendto的话,比如你第一个调用的recvfrom的话,那么你就要bind邦定了,否则出错。
xgPaul 2010-10-28
  • 打赏
  • 举报
回复
1,listen函数并不会阻塞在那里。。。
2,UDP要用recvfrom接收数据,SOCKADDR用于解释客户端信息。。。
3,UDP服务器端需要bind
jamseyang 2010-10-28
  • 打赏
  • 举报
回复
1、listen不会阻塞的,accept才会阻塞的

2、不用

3、是的

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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