C# Socket实例

The following code examples demonstrate how to use the Socket class as a client to connect to remote network services and as a server to listen for connections from remote clients.

来源-MSDN:http://msdn.microsoft.com/zh-cn/library/w89fhyex.aspx

客户端:

 1  using  System;
 2  using  System.Net;
 3  using  System.Net.Sockets;
 4  using  System.Text;
 5 
 6  public   class  SynchronousSocketClient {
 7 
 8       public   static   void  StartClient() {
 9           //  Data buffer for incoming data.
10           byte [] bytes  =   new   byte [ 1024 ];
11 
12           //  Connect to a remote device.
13           try  {
14               //  Establish the remote endpoint for the socket.
15               //  This example uses port 11000 on the local computer.
16              IPHostEntry ipHostInfo  =  Dns.Resolve(Dns.GetHostName())
17              IPAddress ipAddress  =  ipHostInfo.AddressList[ 0 ];
18              IPEndPoint remoteEP  =   new  IPEndPoint(ipAddress, 11000 );
19 
20               //  Create a TCP/IP  socket.
21              Socket sender  =   new  Socket(AddressFamily.InterNetwork, 
22                  SocketType.Stream, ProtocolType.Tcp );
23 
24               //  Connect the socket to the remote endpoint. Catch any errors.
25               try  {
26                  sender.Connect(remoteEP);
27 
28                  Console.WriteLine( " Socket connected to {0} " ,
29                      sender.RemoteEndPoint.ToString());
30 
31                   //  Encode the data string into a byte array.
32                   byte [] msg  =  Encoding.ASCII.GetBytes( " This is a test<EOF> " );
33 
34                   //  Send the data through the socket.
35                   int  bytesSent  =  sender.Send(msg);
36 
37                   //  Receive the response from the remote device.
38                   int  bytesRec  =  sender.Receive(bytes);
39                  Console.WriteLine( " Echoed test = {0} " ,
40                      Encoding.ASCII.GetString(bytes, 0 ,bytesRec));
41 
42                   //  Release the socket.
43                  sender.Shutdown(SocketShutdown.Both);
44                  sender.Close();
45                  
46              }  catch  (ArgumentNullException ane) {
47                  Console.WriteLine( " ArgumentNullException : {0} " ,ane.ToString());
48              }  catch  (SocketException se) {
49                  Console.WriteLine( " SocketException : {0} " ,se.ToString());
50              }  catch  (Exception e) {
51                  Console.WriteLine( " Unexpected exception : {0} " , e.ToString());
52              }
53 
54          }  catch  (Exception e) {
55              Console.WriteLine( e.ToString());
56          }
57      }
58      
59       public   static   int  Main(String[] args) {
60          StartClient();
61           return   0 ;
62      }
63  }

 

服务器端:

 

 1  using  System;
 2  using  System.Net;
 3  using  System.Net.Sockets;
 4  using  System.Text;
 5 
 6  public   class  SynchronousSocketListener {
 7      
 8       //  Incoming data from the client.
 9       public   static   string  data  =   null ;
10 
11       public   static   void  StartListening() {
12           //  Data buffer for incoming data.
13           byte [] bytes  =   new  Byte[ 1024 ];
14 
15           //  Establish the local endpoint for the socket.
16           //  Dns.GetHostName returns the name of the 
17           //  host running the application.
18          IPHostEntry ipHostInfo  =  Dns.Resolve(Dns.GetHostName());
19          IPAddress ipAddress  =  ipHostInfo.AddressList[ 0 ];
20          IPEndPoint localEndPoint  =   new  IPEndPoint(ipAddress,  11000 );
21 
22           //  Create a TCP/IP socket.
23          Socket listener  =   new  Socket(AddressFamily.InterNetwork,
24              SocketType.Stream, ProtocolType.Tcp );
25 
26           //  Bind the socket to the local endpoint and 
27           //  listen for incoming connections.
28           try  {
29              listener.Bind(localEndPoint);
30              listener.Listen( 10 );
31 
32               //  Start listening for connections.
33               while  ( true ) {
34                  Console.WriteLine( " Waiting for a connection " );
35                   //  Program is suspended while waiting for an incoming connection.
36                  Socket handler  =  listener.Accept();
37                  data  =   null ;
38 
39                   //  An incoming connection needs to be processed.
40                   while  ( true ) {
41                      bytes  =   new   byte [ 1024 ];
42                       int  bytesRec  =  handler.Receive(bytes);
43                      data  +=  Encoding.ASCII.GetString(bytes, 0 ,bytesRec);
44                       if  (data.IndexOf( " <EOF> " >   - 1 ) {
45                           break ;
46                      }
47                  }
48 
49                   //  Show the data on the console.
50                  Console.WriteLine(  " Text received : {0} " , data);
51 
52                   //  Echo the data back to the client.
53                   byte [] msg  =  Encoding.ASCII.GetBytes(data);
54 
55                  handler.Send(msg);
56                  handler.Shutdown(SocketShutdown.Both);
57                  handler.Close();
58              }
59              
60          }  catch  (Exception e) {
61              Console.WriteLine(e.ToString());
62          }
63 
64          Console.WriteLine( " \nPress ENTER to continue " );
65          Console.Read();
66          
67      }
68 
69       public   static   int  Main(String[] args) {
70          StartListening();
71           return   0 ;
72      }

73 }

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值