日期:2014-05-17  浏览次数:20733 次

初学socket通信,一段代码不懂

//初始化接受套接字:寻址方案,以字符流方式和Tcp通信
socketReceive = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

//获取本机IP地址并设置接受信息的端口
ipReceive = new IPEndPoint(Dns.GetHostEntry(Dns.GetHostName()).AddressList[0], 8001);

//将本机IP地址和接受端口绑定到接受套接字
socketReceive.Bind(ipReceive);

//监听端口,并设置监听缓存大小为1024byte
socketReceive.Listen(1024);

Socket chat = socketReceive.Accept();//这里的accept有什么用,为什么不能用socketReceive直接进行通信,listen不是阻塞的吗?

------解决方案--------------------
Listen不阻塞,Listen的作用是让一个面向连接的 Socket 侦听传入的连接尝试,其参数指定队列中最多可容纳的等待接受的传入连接数。 
Accept用来接受一个远程的连接请求,服务端用这个Accept返回的套接字也就是这里的chat与客户端通讯。