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:\Users\Administrator\Desktop\12333.jpg", file1);//保存文件

图片的显示

//将图片数据写入流
  MemoryStream ms = new MemoryStream();
  ms.Write(file1, 0, file1.Length);
  //显示图片
  Image img = Image.FromStream(ms);
   picBox.Image = null;
   picBox.Image = img;
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"C"是拉丁字母表中的第三个字母,也是英语中常用的字母之一。在计算机编程中,C语言是一种高级程序设计语言,是一种通用的程序设计语言,也是最基础的编程语言之一。C语言很重要,因为它是许多其他编程语言的基础。它简洁、灵活、强大,允许编程者以底层的方式控制计算机的功能。 通过学习C语言,可以培养抽象思维和逻辑思维能力,提高问题解决和编程技巧。在学习C语言的过程中,可以了解计算机的原理和工作方式,实践如何利用计算机进行程序设计和开发。C语言广泛应用于操作系统、编译器、编程工具、嵌入式系统、游戏开发等领域。 C语言有许多重要的特性,如简洁的语法、强大的表达能力、高效的执行速度、低级的内存访问控制、丰富的标准库等。它也是许多其他编程语言的基础,如C++、C#、Java等,通过学习C语言,可以更容易地学习和掌握这些相关编程语言。 C语言虽然强大,但也有一些限制和挑战,如对高级特性的支持不够、对异常处理的不足、容易出现内存错误等。因此,在实际编程中,需要有良好的编程习惯和规范,遵循标准和最佳实践来确保程序的质量和可靠性。 总之,C语言作为一种通用的程序设计语言,具有重要的地位和作用。通过学习C语言,可以提高编程能力和理论基础,为进一步学习和掌握其他编程语言打下基础。它是计算机科学和软件工程领域必不可少的学科,对于从事相关行业和领域的人来说具有重要的意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值