1、线程执行的带参数的方法
- 参数必须是object类型,如要使用其他类型的参数,在方法里面转
- 在
Start里面传参:
Thread th = new Thread(Test);
th.IsBackground = true;
th.Start("123");2、Socket
1. 概念
- Socket的作用:电脑和电脑之间联系所使用的工具
- Socket的定义:是一种进程通信机制,通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两个程序通信用的)
2. 客户端和服务端通信的过程
- 客户端找到服务端负责监听的Socket
- 负责监听的Socket找到对应的应用程序
- 负责监听的Socket创建一个负责通信的Socke与客户端联系
- 客户端与服务端的应用程序建立连接
- 因此, 服务器最少有两个Socket :负责监听的;负责通信的。而客户端只需要一个Socket
3. 种类:
- 流式Socket(STREAM):是一种面向连接的Socket,针对于面向连接的TCP服务应用,安全但是效率低
- 数据报式Socket(DATAGTAM):是一种无连接的Socket,对应于无连接的UDP服务应用,不安全(丢失,顺序混乱,在接收端要分析重排及要求重发),但效率高
4. 代码:
1. 创建一个新的Socket对象
Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);- AddressFamily表示IP地址:InterNetwork代表ipv4,InterNetworkv6代表ipv6
- SocketType表示Socket种类:tcp使用Stream,udp使用Dgram。
- ProtocolType表示使用的协议:tcp和udp
2. 创建IP地址对象
IPAddress ip = IPAddress.Any;//IPAddress.Parse(txtServer.Text);.Parse()将string类型转换为IPAddress赋值给ip.Any自动获取ip并赋值,通过any获得的,如果ip地址改变,ip也会跟着变
3. 其他
IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text));创建端口号对象socketWatch.Bind(point);让负责监听的Socket绑定IP地址和端口号,由于端口号信息里面已经包含了ip地址,所以不需要再传socketWatch.Listen(10);设置监听队列,同一时间只能有多少人接入,如果超出了就排队Socket socketSend = socketWatch.Accept();等待客户端的连接,并且创建一个负责通信的Socket。
由于等待的时候一直占用主线程,因此窗口会卡住,需要另外开一个新的线程来等待连接。
而且,连接一次之后就结束了,因此如果想要多个客户端连接,需要写一个循环。ShowMsg(socketSend.RemoteEndPoint.ToString() + ":" + "连接成功");获得服务端的ip地址和端口号int r = socketSend.Receive(buffer);接收到的字节,返回字节数socketSend.Connect(point)连接服务器socketSend.Send(buffer)发送字节数组
3、协议
定义:电脑和电脑之间联系所使用的语言,常用的通常有TCP和UDP协议
1. TCP
1. 建立连接的过程:三次握手
- 第一次握手:客户端问服务器:你有空么?
- 第二次握手:服务器回复:有空
- 第三次握手:客户端:我知道你有空了
- 建立连接
2. 特性:
- 安全稳定
- 效率低
2. UDP
1. 建立连接:
- 不需要握手,客户端只管发,不管服务器有没有空接
- 有可能服务器没空处理,就会出现数据丢失
2. 特性:
- 快速,效率高
- 不稳定,容易发生数据丢失
3. 自创协议
byte[] buffer = new byte[1024 * 1024 * 5];
List<byte> list = new List<byte>();
list.Add(1);
list.AddRange((byte[])buffer);
byte[] newbuffer = list.ToArray();4、端口
- 概念:要访问服务器,需要知道它的ip地址。同一服务器只有一个ip地址,当访问里面的应用程序的时候,需要知道他们的端口号。
- 常用端口号:http--80; ftp--21; smtp--25;
- 端口号必须在1~65535之间,通常我们为了避免抢占端口号,使用1024以后的,最好是50000以后的
评论