Socket异步编程-之客户器端.

 1  using  System;
 2  using  System.Text;
 3  using  System.Net;
 4  using  System.Net.Sockets;
 5  namespace  asyncSocketClient {
 6       class  SocketClient {
 7           static  System.Threading.ManualResetEvent allDone = new  System.Threading.ManualResetEvent( false );
 8          [STAThread]
 9           static   void  Main( string [] args) {
10              SocketClient.Connect();
11 
12          }
13           // 连接方法
14           public   static   void  Connect() {
15              IPAddress ip = IPAddress.Parse( " 10.0.0.153 " );
16              IPEndPoint ipEP = new  IPEndPoint(ip, 11000 );
17              Socket client = new  Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
18              client.BeginConnect(ipEP, new  AsyncCallback(SocketClient.ConnectCallback),client);
19              allDone.WaitOne();
20          }
21           // 异步连接
22           public   static   void  ConnectCallback(System.IAsyncResult ar) {
23               try  {
24                  Socket client = (Socket)ar.AsyncState;
25                  client.EndConnect(ar);
26                  Console.WriteLine( " Socket connected to {0} " ,client.RemoteEndPoint.ToString());
27                  Console.WriteLine( " Press any key to send date to remote server " );
28                  Console.ReadLine();
29                  SocketClient.Send(client, " abc123 " );
30              }
31               catch  (Exception ex) {
32                  Console.WriteLine(ex.Message);
33              }
34          }
35           // 发送数据的方法
36           public   static   void  Send(Socket client, string  data) {
37               byte [] byteData = System.Text.Encoding.ASCII.GetBytes(data);
38              client.BeginSend(byteData, 0 ,byteData.Length, 0 , new  AsyncCallback(SocketClient.SendCallback),client);
39          }
40           // 异步发送方法
41           public   static   void  SendCallback(System.IAsyncResult ar) {
42               try  {
43                  Socket client = (Socket)ar.AsyncState;
44                   int  bytesSend = client.EndSend(ar);
45                  Console.WriteLine( " Send {0} bytes to server. " ,bytesSend);
46              }
47               catch  (Exception ex) {
48                  Console.WriteLine(ex.Message);
49              }
50              allDone.Set();
51          }
52 
53           // 异步接收与服务端异步接收一样.同理,服务端异常发送与客户端异步发送一样.
54      }
55  }
56 

转载于:https://www.cnblogs.com/fxwdl/archive/2006/08/10/473472.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值