| 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 //發(fā)送數(shù)據(jù)的方法 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 //異步發(fā)送方法 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 //異步接收與服務(wù)端異步接收一樣.同理,服務(wù)端異常發(fā)送與客戶端異步發(fā)送一樣. 54 } 55 } 56 | 
|  | 
來(lái)自: xnet > 《我的圖書(shū)館》