1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > .NET技术之美-网络编程

.NET技术之美-网络编程

时间:2021-10-17 20:09:24

相关推荐

.NET技术之美-网络编程

概要

.NET框架提供了.*的一系列网络编程,其中.socket主要提供低层TCP,UDP通信,高层下的通信HTTP,FTP,SMTP通信

1、面向连接的传输协议-TCP

什么是面向连接:首先必须要有一个握手过程,确认连接成功之后才能传输数据.

TCP最大的特点是全双工:就是A与B交互,数据可以从A到B,也可以从B到A

点对点:只能是一对一不能一对多

2、套接字

套接字的两个重要的属性:发起连接的本地IP和端口号,远程的IP地址和端口号

.NET框架中提供了.sockets.socket类,两个帮助类TcpClient和TcpListener

TcpListener持续对端口侦听,如果发现对象,则会生成一个TcpClient对象来处理和发送消息,而且同时TcpListen还会同时监听端口

2.1、server创建并监听接口

console.writerine("server is running");ipaddress ip=new ipaddress.parse("192.168.0.100");TcpListen listerner=new TcpListern(ip,8500);listernen.start();console.writerline("start Listeing..");

2.2、client创建连接和接口

console.writerline("Client is running");TcpClient client=new TcpClient();client.connect(ipaddress.parse("192.168.0.100"),8500);

2.3、server端获取客户端连接状态

console.writerine("server is running");ipaddress ip=new ipaddress.parse("192.168.0.100");TcpListen listerner=new TcpListern(ip,8500);listernen.start();console.writerline("start Listeing..");TcpClient remoteClient=listener.AcceptTcpClient();console.writerline("client connected!local:{0} <--Client:{1}",remoteClient.client.localendpoint,remoteClient.client.remoteendpoint)

server端获取多个客户端的连接

while(true){TcpClient remoteClient=listener.AcceptTcpClient();console.writerline("client connected!local:{0} <--Client:{1}",remoteClient.client.localendpoint,remoteClient.client.remoteendpoint)}

AcceptTcpClient()方法在没有收到客户端的连接的之前,不会向前持行

2.4、同步传输字符串

2.4.1、server端接收

.NET框架提供了TcpClient的getStream()方法获取client连接server的流

const int buffersize=8192;console.writerine("server is running");ipaddress ip=new ipaddress.parse("192.168.0.100");TcpListen listerner=new TcpListern(ip,8500);listernen.start();console.writerline("start Listeing..");TcpClient remoteClient=listener.AcceptTcpClient();console.writerline("client connected!local:{0} <--Client:{1}",remoteClient.client.localendpoint,remoteClient.client.remoteendpoint)////networkstream streamToClient=remoteClient.GetSream(); byte[] buff=new byte[buffersize]; int byteRead=streamToClient.Read(buffer,0,buffersize); string msg=encoding.unncode.getstring(buffer,0,bytesread);

2.4.2、Client发送

同样client需要发送消息,也需要获取server端的流

networkstream streamToServert=client.GetSream();

byte[] buff=new byte[buffersize];

streamToClient.writer(buffer,0,buffersize);

2.5、连接总结

1.不使用do/while,server中只用一个listener.accepttcpclient(),则server端可以出来来自一个client的请求

2.使用一个do/while,将listener.accepttcpclient(),TcpClient.GetStream().Read()方法都放在这个循环内,那么server可以处理多个client,但每个client只能处理一个请求

3.使用一个do/while,将listener.accepttcpclient(),TcpClient.GetStream().Read()方法都放在这个循环外,那么server可以处理一个client多个请求

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。