TcpClient类与TcpListener类
TcpClient类
- //构造方法1
- TcpClient t = new TcpClient();
- t.Connect("www.163.com", );
- //构造方法2
- IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.10.27"),);
- TcpClient t2 = new TcpClient(iep);
- t2.Connect("www.163.com", );//也可以使用Connect方法与远程设备连接
- //构造方法3
- TcpClient t3 = new TcpClient("www.163.com", );
- //常用方法
- //Close(); 关闭TCP连接
- //Connect(); 用于与远程设备建立TCP连接
- //GetStream 返回用于发送和接收数据的NetworkStream
- //GetType() 获取当前实例的Type
- //常用属性
- //Availabe 获取已经从网络接收且可供读取的数据量
- //Client 获取或设置基础Socket
- //Connected 获取一个值,该值指示TcpClient的基础Socket是否已连接到远程主机
- //ExclusiveAddressUse 获取或设置Boolean值,该值指定TcpClient是否只允许一个客户端使用端口
- //LingerState 得到或者设置套接字保持时间
- //NoDelay 得到或者设置套接接字保持的时间
- //ReceiverBufferSize 得到或设置TCP接收缓冲区的尺寸
- //ReceiveTimeout 得到或设置套接字接收数据的超时时间
- //SendBufferSize 得到或者设置TCP发送缓冲区的大小
- //SendTimeOut 得到或者设置套接字发送数据的超时时间
TcpListener类:
- //构造函数
- //TcpListener(int port);
- //TcpListener(IPEndPoint ipe);
- //TcpListener(IPAddress addr,int port);
- //至少需要一个参数,那就是端口号
- //TcpListener类的方法
- //AcceptSocket 从端口处接收一个连接并赋予它Socket对象
- //AcceptTcpClient 从端口处接收一个连接并赋予它TcpClient对象
- //Pending 确定是否有挂起的连接请求
- //Start 开始侦听传入的连接请求
- //Stop 关闭侦听器
- //生成TcpListener对象并收听流入连接的过程代码如下:
- //初始化对象
- TcpListener Server = new TcpListener(IPAddress.Parse("192.168.1.1"), );
- //开始监听端口
- Server.Start();
- //这个对象接收从客户端发送来的数据
- TcpClient newclient = Server.AcceptTcpClient();
测试代码:
- //Client
- static void Main(string[] args)
- {
- try
- {
- //建立TcpClient对象,并且连接到4001上的localhost
- TcpClient newclient = new TcpClient();
- newclient.Connect("127.0.0.1", );
- NetworkStream stm = newclient.GetStream();
- //利用NetworkStream对象发送数据
- //byte[] sendBytes = Encoding.ASCII.GetBytes("Data is coming" + "here");
- string strToSend = Console.ReadLine();
- byte[] sendBytes = Encoding.ASCII.GetBytes(strToSend);
- stm.Write(sendBytes, , sendBytes.Length);
- //关闭TcpClient
- newclient.Close();
- Console.ReadLine();
- }
- catch(Exception e)
- {
- //输出异常信息
- Console.WriteLine(e.ToString());
- Console.WriteLine("Data has not been received");
- Console.ReadLine();
- }
- }
- //Server
- static void Main(string[] args)
- {
- //服务器简单的侦听器编写
- try
- {
- //创建TcpListener对象,侦听端口4001,用Start()方法进行侦听
- TcpListener listener = new TcpListener();
- listener.Start();
- //AcceptTcpClient()方法接受一个连接请求,返回一个TcpClient,使用它的GetStream方法来创建NetworkStream对象
- TcpClient tc = listener.AcceptTcpClient();
- NetworkStream stm = tc.GetStream();
- byte[] redBuf = new byte[];
- //用Read()方法读取数据
- stm.Read(redBuf, , );
- //显示数据
- Console.WriteLine(Encoding.ASCII.GetString(redBuf));
- stm.Close();
- Console.ReadLine();
- }
- catch(Exception e)
- {
- Console.WriteLine(e.ToString());
- Console.ReadLine();
- }
- }
TcpClient类与TcpListener类的更多相关文章
- winform网络编程之TcpClient类,TcpListener类和UdpClient类
TcpClient类和TcpListener类 (1)TcpClient的用途: 用于在同步阻止模式下通过网络来链接.发送和接受流数据,在此情况下,必须有侦听此连接的请求,而侦听的任务就交给TcpLi ...
- TcpListener 类
构造函数 名称 说明 TcpListener(IPAddress, Int32) 新实例初始化 TcpListener 类用于侦听传入的连接尝试在指定的本地 IP 地址和端口号. TcpL ...
- JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
- 【转】UML类图与类的关系详解
UML类图与类的关系详解 2011-04-21 来源:网络 在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(D ...
- Java如何解决脆弱基类(基类被冻结)问题
概述 大多数好的设计者象躲避瘟疫一样来避免使用实现继承(extends 关系).实际上80%的代码应该完全用interfaces写,而不是通过extends.“JAVA设计模式”一书详细阐述了怎样用 ...
- 类A have-a 类B,类B访问类A public 成员
需求是类A中包含类B,而类B又需要访问类A的public属性的成员. 首先类B中要访问类A的属性,那么对于类B而言,我们必须要知道有类A这个类,所以在类B的具体实现之前我们需要前向声明类A. 对于类A ...
- UML(一) 类图及类间关系
原创文章,同步发自作者个人博客,http://www.jasongj.com/uml/class_diagram/ UML类图 UML类图介绍 在UML 2.*的13种图形中,类图是使用频率最高的UM ...
- JAVA正则表达式:Pattern类与Matcher类详解(转)
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表 ...
- C# 根据类名称创建类示例
//获得类所在的程序集名称(此处我选择当前程序集) string bllName = System.IO.Path.GetFileNameWithoutExtension(System.Reflect ...
随机推荐
- 对《重建中国.NET生态系统》评论贴的总结
Neuzilla官方微信公众号:搜 架构师联盟 或 neuzilla,也可以扫下面二维码 在看了<重建中国.NET生态系统>的各种哭爹喊娘骂街的评论之后,我觉得哦,淫才确实很多,但是么真正 ...
- Linq连接查询之左连接、右连接、内连接、全连接、交叉连接、Union合并、Concat连接、Intersect相交、Except与非查询
内连接查询 内连接与SqL中inner join一样,即找出两个序列的交集 Model1Container model = new Model1Container(); //内连接 var query ...
- RHCE实验环境|rhel7-lab
教学环境说明: 1.yum源地址是:http://content.example.com 2.网卡都用同一个,且自定义网卡! 3.网络配置参考 classroom IP 172.25.254.254/ ...
- 【Zeyphr】保存json到数据库
方法一: public int SaveJob(JObject data) { var formWrapper = RequestWrapper.Instance().LoadSettingXmlSt ...
- java 计算地球上两点间距离
/** * 计算地球上任意两点(经纬度)距离 * * @param long1 * 第一点经度 * @param lat1 * 第一点纬度 * @param long2 * 第二点经度 * @para ...
- Android 全屏显示的方法(不包含状态栏)
我们都知道在Android中某些功能的实现往往有两种方法:一种是在xml文件中设置相应属性,另一种是用代码实现.同样Android实现全屏显示也可以通过这两种方法实现: 1.在AndroidManif ...
- Redis集群(一):基本概念
一.使用版本:3.0.0.0 二.基本概念: 号至 11000 号的哈希槽, 这样集群就不会因为主节点 B 的下线而无法正常运作了. 异步复制(虽然是异步复制,但是执行写命令和复制命令到从节点几乎是 ...
- 大素数测试 求因子 poj 1811
抄别人的 #include<stdio.h> #include<string.h> #include<algorithm> #include<stdlib.h ...
- MyEclipse去除网上复制下来的来代码带有的行号
作为开发人员,我们经常从网上复制一些代码,有些时候复制的代码前面是带有行号,如: MyEclipse本身自带有查找替换功能,并且支持正则表达式替换,使用正则替换就可以很容易去除这些行号 使用快捷键“c ...
- 51nod 1101换零钱(背包)
N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100元. 例如:5分钱换为零钱,有以下4种换法: 1.5个1分 2.1个2分3个1分 3.2个 ...