关于Socket类的疑问

WoKanBuDao 2016-03-18 11:39:47
Socket.Accept()和Scoket.Bind() Socket.Connect()方法
Socket.Accept() 方法是在 服务端,这个方法上msdn上解释的是: 为新建连接创建新的 Socket。不是很明白,
Socket.Accept()方法是不是和 Socket.Connect()方法有关联啊,个人感觉是 执行客户端 Socket.Connect() ,然后服务端执行这个Socket.Accept() 对吗?我的理解
...全文
164 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiaoshiyao 2016-03-21
  • 打赏
  • 举报
回复
引用 12 楼 WoKanBuDao 的回复:
[quote=引用 7 楼 jiaoshiyao 的回复:] [quote=引用 5 楼 wyd1520 的回复:] .Accept()房已开好,等你过来, Connect()敲门。 然后进去OOXX
Send(啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊噢噢噢噢哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦);[/quote] - - 我怎么理解的是 Accept()一直等待 开门,Connect() 敲门,不过也好像差不多 也就是服务端的Accept一直在等 Connect 对吗 ?大兄弟[/quote]服务器端Accept() 是今天开始营业,当服务器开始营业后,客户端Connect() 是进门,可以说服务端的Accept是一直在等 Connect
WoKanBuDao 2016-03-21
  • 打赏
  • 举报
回复
5,6,7 想法很畜生,但却很明了
WoKanBuDao 2016-03-21
  • 打赏
  • 举报
回复
引用 7 楼 jiaoshiyao 的回复:
[quote=引用 5 楼 wyd1520 的回复:] .Accept()房已开好,等你过来, Connect()敲门。 然后进去OOXX
Send(啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊噢噢噢噢哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦);[/quote] - - 我怎么理解的是 Accept()一直等待 开门,Connect() 敲门,不过也好像差不多 也就是服务端的Accept一直在等 Connect 对吗 ?大兄弟
WoKanBuDao 2016-03-21
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
Socket类是为了跟 linux 系列兼容而用的。在.net中使用 tcp,你应该使用 TcpListener/TcpClient 类。 在 TcpListener 类中有方法 BeginAcceptTcpClient/AcceptTcpClient,这说明了它与 Client 的区别。
我在了解下 TcpListener/TcpClient
lccleo 2016-03-19
  • 打赏
  • 举报
回复
引用 9 楼 wangtaoist 的回复:
建议.net使用Hpsocket
没找到这个类 在哪个命名空间下?
tcmakebest 2016-03-18
  • 打赏
  • 举报
回复
服务端的Accept必须是先执行,它会卡在那里直到有客户端连接,这时会得到一个新的连接, 一个连接只与一个客户端相连,并且小的应用会再新建专用的一个线程来读取和处理数据, 如果要支持很大数量的客户端,则还有另外的处理模式,这个慢慢学了一步一步来.
  • 打赏
  • 举报
回复
Socket类是为了跟 linux 系列兼容而用的。在.net中使用 tcp,你应该使用 TcpListener/TcpClient 类。 在 TcpListener 类中有方法 BeginAcceptTcpClient/AcceptTcpClient,这说明了它与 Client 的区别。
Poopaye 2016-03-18
  • 打赏
  • 举报
回复
crystal_lz 2016-03-18
  • 打赏
  • 举报
回复

Socket.Bind(new IPEndPoint(IPAddress.Any,10086))//绑定需要监听的端口 如本机所有ip的10086端口
Socket.Listen(5)//连接的队列个数 UDP不用
Socket.Connect(new IPEndPoint(IPAddress.Prase("123.456.789.1",10086)))//连接到123.456.789.1的10086端口
Socket sock = Socket.Accpet()//等待连接接入 如远程有机器使用Connect()接入本机 Accpet() 则返回远程的Socket
冷尘 2016-03-18
  • 打赏
  • 举报
回复
建议.net使用Hpsocket
songbing774933 2016-03-18
  • 打赏
  • 举报
回复
Connect()是给客户端用的,Accept()是给服务端用的

服务端调用Accept()后会阻塞线程,直到有客户端调用Connect()连接服务端
jiaoshiyao 2016-03-18
  • 打赏
  • 举报
回复
引用 5 楼 wyd1520 的回复:
.Accept()房已开好,等你过来, Connect()敲门。 然后进去OOXX
Send(啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊噢噢噢噢哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦);
FTD_Fred 2016-03-18
  • 打赏
  • 举报
回复
引用 5 楼 wyd1520 的回复:
.Accept()房已开好,等你过来, Connect()敲门。 然后进去OOXX
非常透彻
本拉灯 2016-03-18
  • 打赏
  • 举报
回复
.Accept()房已开好,等你过来, Connect()敲门。 然后进去OOXX

110,499

社区成员

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

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

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