日期:2011-02-12  浏览次数:20479 次

同步客户端套接字示例


下面的示例程序创建一个连接到服务器的客户端。该客户端是用同步套接字生成的,因此挂起客户端应用程序的执行,直到服务器返回响应为止。该应用程序将字符串发送到服务器,然后在控制台显示该服务器返回的字符串。
 [C#]
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
 
public class SynchronousSocketClient {
 
  public static void StartClient() {
    // Data buffer for incoming data.
    byte[] bytes = new byte[1024];
 
    // Connect to a remote device.
    try {
      // Establish the remote endpoint for the socket.
      //    The name of the
      //   remote device is "host.contoso.com".
      IPHostEntry ipHostInfo = Dns.Resolve("host.contoso.com");
      IPAddress ipAddress = ipHostInfo.AddressList[0];
      IPEndPoint remoteEP = new IPEndPoint(ipAddress,11000);
 
      // Create a TCP/IP  socket.
      Socket sender = new Socket(AddressFamily.InterNetwork, 
        SocketType.Stream, ProtocolType.Tcp );
 
      // Connect the socket to the remote endpoint. Catch any errors.
      try {
        sender.Connect(remoteEP);
 
        Console.WriteLine("Socket connected to {0}",
          sender.RemoteEndPoint.ToString());
 
        // Encode the data string into a byte array.
        byte[] msg = Encoding.ASCII.GetBytes("This is a test<EOF>");
 
        // Send the data through the  socket.
        int bytesSent = sender.Send(msg);
 
        // Receive the response from the remote device.
        int bytesRec = sender.Receive(bytes);
        Console.WriteLine("Echoed test = {0}",
          Encoding.ASCII.GetString(bytes,0,bytesRec));
 
        // Release the socket.
        sender.Shutdown(SocketShutdown.Both);
        sender.Close();
        
      } catch (ArgumentNullException ane) {
        Console.WriteLine("ArgumentNullException : {0}",ane.ToString());
      } catch (SocketException se) {
        Console.WriteLine("SocketException : {0}",se.ToString());
      } catch (Exception e) {
        Console.WriteLine("Unexpected exception : {0}", e.ToString());
      }
 
    } catch (Exception e) {
      Console.WriteLine( e.ToString());