本帖最后由 许庭洲 于 2014-4-10 08:23 编辑  
 
服务器启动并监听客户端请求 
1. 通过IP地址和端口创建网络节点对象; 
2. 创建一个套接字(工具,固定代码); 
3. 将套接字绑定到唯一的网络节点上; 
4. 设置监听队列长度; 
5. 通过线程为每一个与之连接的客服端分配一个Socket对象: 
6. 创建负责监听的线程,并传入监听方法; 
 ---------------------------------------------------------------------------------------------------------------------------------- 
  //通过IP地址和端口创建网络节点对象 
   IPAddress address=IPAddress.Parse(服务器Ip地址); 
   IPEndPoint endpoint=new IPEndPoint(address,int.Parse(端口)); 
   //创建一个套接字(工具,固定代码) 
   Socket socketWatch =new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); 
   //将套接字绑定到唯一的网络节点上 
   socketWatch.Bind(endpoint); 
   //设置监听队列长度 
   socketWatch.Listen(10); 
 
   //通过线程为每一个与之连接的客服端分配一个Socket对象: 
   Thread threadWatch=new Thread(WatchConnecting);//创建负责监听的线程,并传入监听方法 
   threadWatch.IsBackground=true;//设置为后台线程 
   threadWatch.Start();//开启线程 
 
   //创建监听方法 
 
   void WatchConnecting() 
   { 
     while(true) 
     { 
       //开始监听,一旦监听到客户端的连接请求,就分配一个与之对应的通信套接字 
       Socket sokConnection=socketWatch.Accept(); 
       MessageBox.showDialog("有新的客户端成功连接!"); 
     } 
 
   } 
----------------------------------------------------------------------------------------------------------------------------------- 
服务器端向客户端发送消息,客户端接收消息 
1.通过IP地址和端口创建网络节点对象; 
2.创建一个套接字(工具,固定代码); 
3.将套接字绑定到唯一的网络节点上; 
4.设置监听队列长度; 
5.创建一个Dictory<string,Socket> 用来存储所有与服务器通信的套接字; 
6.通过线程为每一个与之连接的客服端分配一个Socket对象: 
7.获取与要发送信息的客户端套接字,并调用方法发送消息; 
--------------------------------------------------------------------------------------------------------------------------------- 
//通过IP地址和端口创建网络节点对象 
   IPAddress address=IPAddress.Parse(服务器Ip地址); 
   IPEndPoint endpoint=new IPEndPoint(address,int.Parse(端口)); 
   //创建一个套接字(工具,固定代码) 
   Socket socketWatch =new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); 
   //将套接字绑定到唯一的网络节点上 
   socketWatch.Bind(endpoint); 
   //设置监听队列长度 
   socketWatch.Listen(10); 
   //创建一个Dictory<string,Socket> 用来存储所有与服务器通信的套接字 
   Dictory<string,Socket> dic=new Dictory<string,Socket>; 
   //通过线程为每一个与之连接的客服端分配一个Socket对象: 
   Thread threadWatch=new Thread(WatchConnecting);//创建负责监听的线程,并传入监听方法 
   threadWatch.IsBackground=true;//设置为后台线程 
   threadWatch.Start();//开启线程 
    
   //获取与要发送信息的客户端套接字,并调用方法发送消息 
     string strMsg="要发送的消息"; 
     byte[] arrMsg=System.Text.Encoding.UTF8.GetBytes(strMsg); 
     dic[lbOnline.Text].Send(arrMsg);//从lbOnline控件中取得网络节点信息,并从套接字集合里获得客户端套接字 
   //创建监听方法 
    
   void WatchConnecting() 
   { 
     while(true) 
     { 
       //开始监听,一旦监听到客户端的连接请求,就分配一个与之对应的通信套接字 
       Socket sokConnection=socketWatch.Accept(); 
       //将每一个通信套接字存入Dictory<string,Socket> dic 
       dic.Add(sokConnection.RemoteEndPoint.ToString(),socketWatch); 
       //将sokConnection的客户端网络节点保存到一个容器里面,假设有一个listBox lbOnline 
       lbOnline.Items.Add(sokConnection.RemoteEndPoint.ToString()); 
       MessageBox.showDialog("有新的客户端成功连接!"); 
     } 
 
   } 
----------------------------------------------------------------------------------------------------------------------------------------- 
 
 |