C# 以流方式读socket超时设置的简单实例

 1 using System;
 2 using System.IO;
 3 using System.Net;
 4 using System.Text;
 5 using System.Net.Sockets;
 6 
 7 public class client 
 8 {
 9     public static void Main() 
10     {
11         try 
12         {
13             // 新建客户端套接字
14 TcpClient tcpclnt = new TcpClient();
15 Console.WriteLine("连接.....");
16             // 连接服务器
17             tcpclnt.ReceiveTimeout = 3000;//设置Socket的接收超时时间为3S。
18 tcpclnt.Connect("127.0.0.1",8001);
19 Console.WriteLine("已连接");
20 Console.Write("请输入要传输的字符串 : ");
21             // 读入字符串
22 String str=Console.ReadLine();
23 
24             // 得到客户端的流
25 Stream stm = tcpclnt.GetStream();
26             // 发送字符串
27 ASCIIEncoding asen= new ASCIIEncoding();
28 byte[] ba=asen.GetBytes(str);
29 Console.WriteLine("传输中.....");
30 stm.Write(ba,0,ba.Length);
31             // 接收从服务器返回的信息
32 byte[] bb=new byte[100];
33 int k=stm.Read(bb,0,100);   //3秒后会出现超时异常
34             // 输出服务器返回信息
35             for (int i=0;i
36             {
37                 Console.Write(Convert.ToChar(bb[i]));
38             }
39             // 关闭客户端连接
40 tcpclnt.Close();
41 }
42 catch (Exception e) 
43         {
44 Console.WriteLine("Error..... " + e.StackTrace);
45 }
46 }
47 }

 

============================================================

TCPListener类用于监听客户端连接请求,TCPClient类用于提供本地主机和
远程主机的连接信息。
两个类都位于 System.Net.Socckets命名空间下
TCPListener类常用的放方法。
方法                  说明
AcceptSocket       从端口处接收一个连接并赋予它Socket对象
AcceptTcpClient    从端口处接收一个连接并赋予它TCPClient对象
Equals             判断两个TcpListener对象是否相等
GetType            获取当前实例的类型
Pending            确定是否有挂起的连接请求
Start              开始接听传入的连接请求
Stop               关闭监听器
ToString           创建TcpListener对象的字符串表示

所以我们在用TcpListener监听port时,一旦连接建立,也可以从tcplisener.acceptTcpclient得到一个tcpclient对象,对数据的读写就可以设置超时了

posted @ 2018-03-21 09:39  中创IT空间  阅读(2185)  评论(0编辑  收藏  举报