我是靠谱客的博主 大胆篮球,最近开发中收集的这篇文章主要介绍C#_ TCP协议 socket,实现对图片,文件,消息的收发(二),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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,实现对图片,文件,消息的收发(二)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部