概述
tcp传输方法主要使用scoket和TcpClient进行传输,本次使用scoket进行传输
1.TCP通讯的过程
1>接收端bind选定ip和端口将套接字与本地连接,客户端选择ip与端口
2>linsten设置为监听状态
3>accept与connet三次握手发包建立连接
第一次
接收端发送syn包建立连接
第二次
发送端发送接收到的syn和ack包给接收端建立连接
第三次
接收端发送ack包给发送端确认连接状态
2.tcp协议是什么
tcp协议属于传输层,是数据传输过程中的一种发送编码格式
3.数据怎么传输的
1>字符串的传输
将需要发送的字符串编码,发送给套接字,然后在解码使用,发送端和接收端使用不同的编码格式可能会乱码
2>图片的传输
将文件流存储到缓存区,然后把缓存区中内容通过send发送给套接字,Receive将从套接字接收到的数据存储到缓存区
在转换成流然后方便显示
3>文件的传输
将文件从文件流中存入缓存区,然后通过合并数组发送给接收端(用于区分接收内容),在解码后拆分,然后将文件的字符串编码保存文件
4.判断发送多种类型数据
不同类型的数据区分使用合并数组和拆分数组实现
以下为本次输出程序
tcp通讯过程
接收端
//使socket处于侦听状态
listener.Listen(10);
//侦听到连接后,创建一个新的scoket,处理数据
Socket Socket = listener.Accept();
发送端
//设置ip及端口
EndPoint endPoint = new IPEndPoint(IPAddress.Parse(comboBox1.Text), 21);
//建立与远程设备的连接
sock.Connect(endPoint);
发送及接收消息
//发送数组
sock.Send(bytSend);
//从套接字接收数据到缓存区
Socket.Receive(bitLen, bitLen.Length, SocketFlags.None);
编码及解码
//编码
byte[] bytSend = new byte[1024 * 1024 * 2];
bytSend = Encoding.Default.GetBytes("0"+txtSendMssg.Text);
MessageBox.Show(Convert.ToString("发送字节数"+bytSend.Length));
//解码
//将数组解析为字符串
string s =Encoding.Default.GetString(bitLen.ToArray());
合并数组及拆分数组
//合并数组
byte[] byte1 = Encoding.Default.GetBytes("1");
byte[] arrFile22 = new byte[1024 * 1024 * 3];
byte1.CopyTo(arrFile22, 0);
arrFile.CopyTo(arrFile22,1);
//发送数组
sock.Send(arrFile22);
//拆分数组
string str1 = s.Substring(0, 1);
string str2 = s.Substring(1, s.Length - 1);
文件的打开及保存
FileStream fs = new FileStream(textBox1.Text, FileMode.Open);//打开文件
fs.Read(arrFile, 0, arrFile.Length);//读取到缓存区
File.WriteAllBytes(@"C:UsersAdministratorDesktop12333.jpg", file1);//保存文件
图片的显示
//将图片数据写入流
MemoryStream ms = new MemoryStream();
ms.Write(file1, 0, file1.Length);
//显示图片
Image img = Image.FromStream(ms);
picBox.Image = null;
picBox.Image = img;
最后
以上就是大胆篮球为你收集整理的C#_ TCP协议 socket,实现对图片,文件,消息的收发(二)的全部内容,希望文章能够帮你解决C#_ TCP协议 socket,实现对图片,文件,消息的收发(二)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复