C#.网络编程.TcpListener&TcpClient
2016-01-04 13:58
459 查看
一直以来觉得自己接触编程的起始时间点太晚,比如我直到上了大学才知道原来操作系统不止windows一个……
对网络也算是满感兴趣的,听说C#支持网络编程,感觉特别想了解一下。
然而学的不多,看的一个教程是用TcpListener和TcpClient进行的传输,作为对基础Socket类的一个封装,其使用尤其简单。
尚且不知道如何使用Udp……
端口号参数为0则会自己获取一个可用的端口号而无须程序员指定
2、对上述两个参数的一个封装类
开始侦听连接请求,收到一个就存到队列里存着,队列满则报错SocketException
2、获取连接
从队列里取出一个连接,返回TcpClient。如果队列里还没有连接,那么程序就会卡在这一步,直到收到一个连接。
3、数据传输
在刚刚获得的TcpClient对象上调用以下方法
这也就获得了一个网络信息流NetWorkStream,就可以写入Write和读取Read了
底层会自己匹配最合适的local IP地址和port端口号,不过只适合于IPV4
向远程的目标发起连接请求。
如果远程刚刚好有一个TcpListener已经Start()了,那么这个请求就会被接受。否则程序运行到这里就卡住了。这和TcpListener的AcceptTcpClient有相同道理。
2、传输
这和远程计算机获得的流是同一个,可以写入Write和读取Read。一般都是一端写入另一端读取。
用完了别忘了关掉Clos。
基本使用就这样(要写得更好就得配合异步编程等等,异步编程的方法总结尚有待梳理)。自己也只是简单的了解了一下。尚且对更基础的Socket全无了解。有时间慢慢学吧。
对网络也算是满感兴趣的,听说C#支持网络编程,感觉特别想了解一下。
然而学的不多,看的一个教程是用TcpListener和TcpClient进行的传输,作为对基础Socket类的一个封装,其使用尤其简单。
尚且不知道如何使用Udp……
命名空间
using System.Net using System.Net.Sockets
TcpListener
看名字就知道大概。即侦听来自Tcp网络客户端的连接构造函数
1、本地ip地址与指定端口号new TcpListener(IPAddress , Int32);
端口号参数为0则会自己获取一个可用的端口号而无须程序员指定
2、对上述两个参数的一个封装类
new TcpListener(IPEndPoint)
简单使用
1、开启public void Start();
开始侦听连接请求,收到一个就存到队列里存着,队列满则报错SocketException
2、获取连接
public TcpClient AcceptTcpClient();
从队列里取出一个连接,返回TcpClient。如果队列里还没有连接,那么程序就会卡在这一步,直到收到一个连接。
3、数据传输
在刚刚获得的TcpClient对象上调用以下方法
public NetworkStream GetStream();
这也就获得了一个网络信息流NetWorkStream,就可以写入Write和读取Read了
TcpClient
也就是Tcp的网络客户端构造函数
1、无参构造函数public TcpClient();
底层会自己匹配最合适的local IP地址和port端口号,不过只适合于IPV4
简单使用
1、连接public void Connect( IPEndPoint remoteEP ) public void Connect( IPAddress address, int port )
向远程的目标发起连接请求。
如果远程刚刚好有一个TcpListener已经Start()了,那么这个请求就会被接受。否则程序运行到这里就卡住了。这和TcpListener的AcceptTcpClient有相同道理。
2、传输
public NetworkStream GetStream();
这和远程计算机获得的流是同一个,可以写入Write和读取Read。一般都是一端写入另一端读取。
用完了别忘了关掉Clos。
基本使用就这样(要写得更好就得配合异步编程等等,异步编程的方法总结尚有待梳理)。自己也只是简单的了解了一下。尚且对更基础的Socket全无了解。有时间慢慢学吧。
相关文章推荐
- 网络通信框架Volley使用详细说明
- HttpClient 4.3教程(转载)
- AngularJS XMLHttpRequest
- linux网络编程常用函数详解与实例(socket-->bind-->listen-->accept)
- 互联网时代网络流量的本质是什么?
- 贝叶斯网络(Belief Networks)--模型及方法
- httplib和urllib2常用方法
- Socket编程实践(6) --TCP服务端注意事项
- Socket编程实践(5) --TCP粘包问题与解决
- Socket编程实践(1) --TCP/IP简述
- web服务器、应用服务器、http服务器区别
- 通过Smart HTTP提供代码下载/上传服务
- ntp 同步网络时间
- SCRIPT7002: XMLHttpRequest: 网络错误 0x2ef3, 由于出现错误 00002ef3 而导致此项操作无法完成,浏览器中的Keep-Alive
- AJAX学习笔记:创建XMLHttpRequest对象的五步骤
- 修改lenet网络进行训练(二)
- Android编程实现网络图片查看器和网页源码查看器实例
- 一个java面试官的感慨来源于网络
- 神经网络编程入门
- TCP打洞和UDP打洞的区别