System.Net.Sockets.TcpClient

为 TCP 网络服务提供客户端连接。

命名空间:System.Net.Sockets 汇编集:System(在 system.dll 中)
语法
public class TcpClient : IDisposable
备注

TcpClient 类为了在同步阻塞模式中通过网络来连接、发送,并且接收数据流而提供了简单的方法。

如果要让 TcpClient 能够连接并且交换数据,就需要以 TCP 的 ProtocolType 创建一个 TcpListener 或者 Socket 来监听输入连接请求。你可以通过下列方式来连接到这个监听器:

  • 创建一个 TcpClient 并且调用三种可用的 Connect 方法之一。
  • 使用远程主机的主机名称和端口号来创建一个 TcpClient。并且这个构造器还会自动尝试一个连接。

提示:如果你需要在同步阻塞模式中发送无连接的数据包,就可以考虑使用 UdpClient 类。

继承者要注意:如果要发送和接收数据,就可以使用 GetStream 方法来获取一个 NetworkStream。然后调用 NetworkStream 的 Write 和 Read 方法来发送和接收远程主机的数据。另外,还需要使用 Close 方法来释放所有与该 TcpClient 相关的资源。

范例

下列代码建立了一个 TcpClient 连接。

static void Connect(String server, String message) 
{
  try 
  {
    // 创建一个 TcpClient。
    // 提示:如果要让该客户端工作,你需要拥有一个连接到相同地址(通过被指定的服务器和端口组合)的 TcpServer。
    Int32 port = 13000;
    TcpClient client = new TcpClient(server, port);
    
    // 把已传递的消息转化成 ASCII 并且存储成 Byte 数组。
    Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);         

    // 为读取和写入操作而获取客户端数据流。
   //  Stream stream = client.GetStream();
    
    NetworkStream stream = client.GetStream();

    // 把消息发送到已连接的 TcpServer。
    stream.Write(data, 0, data.Length);

    Console.WriteLine("Sent: {0}", message);         

    // 接收 TcpServer 的回应。
    
    // 缓存回应字节。
    data = new Byte[256];

    // 存储回应 ASCII 呈现的字符串。
    String responseData = String.Empty;

    // 读取 TcpServer 回应字节中的第一批数据。
    Int32 bytes = stream.Read(data, 0, data.Length);
    responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
    Console.WriteLine("Received: {0}", responseData);         

    // 关闭所有。
    stream.Close();         
    client.Close();         
  } 
  catch (ArgumentNullException e) 
  {
    Console.WriteLine("ArgumentNullException: {0}", e);
  } 
  catch (SocketException e) 
  {
    Console.WriteLine("SocketException: {0}", e);
  }
    
  Console.WriteLine("\n Press Enter to continue...");
  Console.Read();
}
.NET Framework 安全性
  • SocketPermission:建立一个输出连接或者接受一个输入请求。
继承层次
System.Object 
  System.Net.Sockets.TcpClient

转载于:https://www.cnblogs.com/Laeb/archive/2007/03/11/670875.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值