Socket网络编程学习笔记(2):面向连接的Socket 在上一篇中,我列了一些常用的方法,可以说这些方法是一些辅助性的方法,对于分析网络中的主机属性非常有用。在这篇中,我将会介绍一下面向连接(TCP)socket 编程,其中辅以实例,代码可供下载。 对于TCP 的Socket 编程,主要分二部分: 一、服务端 Socket 侦听: 服务端 Socket 侦听主要分以下几个步骤,按照以下几个步骤我们可以很方便的建立起一个 Socket 侦听服务,来侦听尝试连接到该服务器的客户 Socket,从而建立起连接进行相关通讯。 1、创建 IPEndPoint 实例,用于Socket 侦听时绑定 1IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 6001); 2、创建套接字实例 1//创建一个套接字 2 serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 这里创建的时候用ProtocolType.Tcp,表示建立一个面向连接(TCP)的Socket。 3、将所创建的套接字与 IPEndPoint 绑定 1 //将所创建的套接字与 IPEndPoint 绑定 2 serverSocket.Bind(ipep); 4、设置套接字为收听模式 1//设置套接字为收听模式 2 serverSocket.Listen(10); 以上这四步,我们已经建立了 Socket 的侦听模式,下面我们就来设置怎么样来获取客户 Socket 连接的实例,以及连接后的信息发送。 5、在套接字上接收接入的连接 1while (true) 2 { 3 try 4 { 5 //在套接字上接收接入的连接 6 clientSocket = serverSocket.Accept(); 7 clientThread = new Thread(new ThreadStart(ReceiveData)); 8 clientThread.Start(); 9 } 10 catch (Exception ex) 11 { 12 MessageBox.Show("listening Error: " + ex.Message); 13 } 14 } 通过serverSocket.Accept()来接收客户Socket 的连接请求,在这里用循环可以实现该线程实时侦听,而不是只侦听一次。当程序运行serverSocket.Accept()时,会等待,直到有客户端Socket 发起连接请求时,获取该客户Socket,如上面的clientSocket。在这里我用多线程来实现与多个客户端Socket 的连接和通信,一旦接收到一个连接后,就新建一个线程,执行ReceiveData 功能来实现信息的发送和接收。 6、 在套接字上接收客户端发送的信息和发送信息 1private void ReceiveData() 2 { 3 bool keepalive = true; 4 Socket s = clientSocket; 5 Byte[] buffer = ...