TcpClient类与TcpListener类

TcpClient类

 1        //构造方法1
 2             TcpClient t = new TcpClient();
 3             t.Connect("www.163.com", 8000);
 4             //构造方法2
 5             IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.10.27"),8000);
 6             TcpClient t2 = new TcpClient(iep);
 7             t2.Connect("www.163.com", 8000);//也可以使用Connect方法与远程设备连接
 8             //构造方法3
 9             TcpClient t3 = new TcpClient("www.163.com", 8000);
10
11
12             //常用方法
13             //Close();      关闭TCP连接
14             //Connect();    用于与远程设备建立TCP连接
15             //GetStream     返回用于发送和接收数据的NetworkStream
16             //GetType()     获取当前实例的Type
17
18             //常用属性
19             //Availabe      获取已经从网络接收且可供读取的数据量
20             //Client        获取或设置基础Socket
21             //Connected     获取一个值,该值指示TcpClient的基础Socket是否已连接到远程主机
22             //ExclusiveAddressUse   获取或设置Boolean值,该值指定TcpClient是否只允许一个客户端使用端口
23             //LingerState   得到或者设置套接字保持时间
24             //NoDelay       得到或者设置套接接字保持的时间
25             //ReceiverBufferSize        得到或设置TCP接收缓冲区的尺寸
26             //ReceiveTimeout        得到或设置套接字接收数据的超时时间
27             //SendBufferSize    得到或者设置TCP发送缓冲区的大小
28             //SendTimeOut       得到或者设置套接字发送数据的超时时间

TcpListener类:

 1          //构造函数
 2             //TcpListener(int port);
 3             //TcpListener(IPEndPoint ipe);
 4             //TcpListener(IPAddress addr,int port);
 5             //至少需要一个参数,那就是端口号
 6
 7             //TcpListener类的方法
 8             //AcceptSocket  从端口处接收一个连接并赋予它Socket对象
 9             //AcceptTcpClient   从端口处接收一个连接并赋予它TcpClient对象
10             //Pending       确定是否有挂起的连接请求
11             //Start         开始侦听传入的连接请求
12             //Stop          关闭侦听器
13
14
15             //生成TcpListener对象并收听流入连接的过程代码如下:
16             //初始化对象
17             TcpListener Server = new TcpListener(IPAddress.Parse("192.168.1.1"), 8000);
18             //开始监听端口
19             Server.Start();
20             //这个对象接收从客户端发送来的数据
21             TcpClient newclient = Server.AcceptTcpClient();

测试代码:

 1 //Client
 2
 3 static void Main(string[] args)
 4         {
 5             try
 6             {
 7                 //建立TcpClient对象,并且连接到4001上的localhost
 8                 TcpClient newclient = new TcpClient();
 9                 newclient.Connect("127.0.0.1", 4001);
10                 NetworkStream stm = newclient.GetStream();
11                 //利用NetworkStream对象发送数据
12                 //byte[] sendBytes = Encoding.ASCII.GetBytes("Data is coming" + "here");
13
14                 string strToSend = Console.ReadLine();
15                 byte[] sendBytes = Encoding.ASCII.GetBytes(strToSend);
16
17                 stm.Write(sendBytes, 0, sendBytes.Length);
18                 //关闭TcpClient
19                 newclient.Close();
20                 Console.ReadLine();
21             }
22             catch(Exception e)
23             {
24                 //输出异常信息
25                 Console.WriteLine(e.ToString());
26                 Console.WriteLine("Data has not been received");
27                 Console.ReadLine();
28             }
29         }
 1 //Server
 2
 3 static void Main(string[] args)
 4         {
 5             //服务器简单的侦听器编写
 6             try
 7             {
 8                 //创建TcpListener对象,侦听端口4001,用Start()方法进行侦听
 9                 TcpListener listener = new TcpListener(4001);
10                 listener.Start();
11                 //AcceptTcpClient()方法接受一个连接请求,返回一个TcpClient,使用它的GetStream方法来创建NetworkStream对象
12                 TcpClient tc = listener.AcceptTcpClient();
13                 NetworkStream stm = tc.GetStream();
14                 byte[] redBuf = new byte[50];
15                 //用Read()方法读取数据
16                 stm.Read(redBuf, 0, 50);
17                 //显示数据
18                 Console.WriteLine(Encoding.ASCII.GetString(redBuf));
19                 stm.Close();
20                 Console.ReadLine();
21             }
22             catch(Exception e)
23             {
24                 Console.WriteLine(e.ToString());
25                 Console.ReadLine();
26             }
27         }
时间: 2024-11-16 17:10:20

TcpClient类与TcpListener类的相关文章

TcpListener 类

构造函数   名称 说明 TcpListener(IPAddress, Int32) 新实例初始化 TcpListener 类用于侦听传入的连接尝试在指定的本地 IP 地址和端口号. TcpListener(IPEndPoint) 新实例初始化 TcpListener 类,具有指定的本地终结点. 属性   名称 说明 Active 获取一个值,该值指示是否 TcpListener 主动侦听客户端连接. ExclusiveAddressUse 获取或设置 Boolean 值,该值指定是否 TcpL

JAVA正则表达式:Pattern类与Matcher类详解(转)

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式. Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查. 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作

【python】-- 类的多继承、经典类、新式类

继承知识点补充 在python还支持多继承,但是一般我们很少用,有些语言干脆就不支持多继承,有多继承,就会带来两个概念,经典类和新式类. 一.多继承 之前我们都是讲的单继承,那么什么是多继承呢?说白了,就是:子类可以继承多个父类,就叫多继承. class SchoolMember(object): #SchoolMember类 '''学校成员基类''' def tell(self): print("the schoolmeber is tell...") class School(ob

JAVA API(一)String类和StringBuffer类

1.String类和StringBuffer类 在程序中经常会用到字符串,所谓的字符串就是指一连串的字符,它是由多个单个字符连接而成的.字符串中可以包含任意字符,这些字符必须包含在一对双引号""之内,如"abc".在Java中定义了String和StringBuffer类来封装字符串,并提供了一系列操作字符串的方法,它们都位于java.lang包中,因此不需要导包就可以直接使用.下面将对String类和StringBuffer类详细讲解. 1.1String类的初始

从设计基类及其派生类看继承关系

继承能够定义可重用.扩展或修改父类行为的子类.但基类的静态构造函数.实例构造函数和析构函数不能被派生类继承. 在下面实例中,定义一个基类Publication用于表示任何类型的出版物以及派生至Publication的其他类型Book类,由此也可以扩展为定义其他类型如:Magazine.Journal.Newspaper和Article. 在设计基类Publication时我们必须考虑到如下关系: 1.要在基类中添加哪些成员 2.基类是否用作派生类模板的抽象基类 3.类层次结构的扩展空间大小,要开

派生类和基类的转换

指针引用分四种情况: 1.直接用基类指针引用基类对象 2.直接用派生指针引用派生对象 3.由基类指针引用派生类对象,由于派生类也是基类对象(包含关系),所以这种引用是安全的.但是只能引用基类成员,若试图通过基类指针引用那些只在派生类中才有的成员,编译器会报告语法错误.(解决该问题的答案是虚函数和多态性) 4.用派生类指针引用基类对象,这种方式会导致编译器报错.必须先把派生类指针强制转换成基类指针. 如果基类和派生类都定义了同名函数,通过对象指针调用成员函数时,到底调用哪里的函数由指针的原始类型决

OC学习篇之---Foundation框架中的NSDictionary类以及NSMutableDictionary类

今天来看一下Foundation框架中的NSDictionary类,NSMutableDictionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和NSArray不一样,Java中的Map也是无序的,通过hash值去检索元素的. 一.NSDictionary类 [objc] view plain copy // //  main.m //  19_NSDictionary // //  Created by jiangwei on 14-10-

java基础,继承类题目:编写一个Java应用程序,该程序包括3个类:Monkey类、People类和主类 E

21.编写一个Java应用程序,该程序包括3个类:Monkey类.People类和主类 E.要求: (1) Monkey类中有个构造方法:Monkey (String s),并且有个public void speak() 方法,在speak方法中输出“咿咿呀呀......”的信息. (2)People类是Monkey类的子类,在People类中重写方法speak(),在speak方法 中输出“小样的,不错嘛!会说话了!”的信息. (3)在People类中新增方法void think(),在thi

过滤A类、B类、C类地址_shell脚本

#!/bin/bash#过滤A类.B类.C类地址#过滤A类地址 -o 只显示符合的A类地址[1-126]read -p "input the file absolute path:" fileegrep -o "([0-9]|[1-9][0-9]|1[01][0-9]|12[0-6])\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\>" $file |sort -n|uniq -c|sort -k 2 -rn >A_ip#过滤B