再识网络编程

---------------------不定时的更新开始了,且更且珍惜------------------------

我要每次都写一遍:前面的还没补完,以此催促不定时更新的我

-----------------

嗯,今天没带耳机,没边听歌边更博,没灵感改歌词

------------------

socket(套接字)编程

  基于socket实现客户端与服务端编程: 

    想象成一个打电话的过程,要想打电话我们必须要先有手机,所以要先去买手机,然后插手机卡,开机等一系列步骤

    服务端必备的三要素:

      1.要有固定的ip和port

      2.24小时不间断提供服务

      3.能承受高并发(并发:看上去像同时进行)  

    服务端:

      

    客户端:

  

    注:

      服务端:

        bind:里面是一个元组,因为bind里面只需要一个参数,但需要传入ip和端口两个值,所以以元组的形式传入

          元组内有两个元素:

              ‘127.0.0.1’:本机回环地址,找的就是自己的地址,且只能本机访问

              第二个元素:端口号(通常为8000以后的)

        listen:半连接池,允许的最大请求个数为5,即可以最多有5个客户端等待连接

        recv(1024):只接收1024个bytes

        send(b‘’):二进制传输

      客户端:

        connect():与服务端中bind的参数一样是个元组,且参数与服务端中的一样

粘包问题

  产生粘包问题的原因:因为TCP协议是流式协议,会将数据量比较小的,并且时间间隔比较短的数据一次性打包发送给接收端

  解决方法:导入struct模块,该模块可以把一个类型,如数字,字典等,转成固定长度的bytes

    

  但当传入的数据大于struct模块中字节最大的模式时,依然会出现问题,这时候就需要将数据存入某个容器中,我们便可以直接传入容器,这样就可以解决这个问题了

  解决粘包问题最终版:(以上传大文件为例)

    服务端:

    客户端:

最终版解决粘包问题的步骤

  服务端:

    1.先发报头

    2.再发字典

    3.再发你的真实数据

  客户端:

    1.先接收4个长度的报头

    2.解包拿到字典数据长度

    3.接收字典(反序列化>>>>获取字典里面所有信息)

      4.接收真实数据

以下内容我要谴责王xx,利xx,两个人大半夜不睡觉,发美食????你们的良心不会痛吗??

只因为在图群中多看了你一眼,口水没忍住,肚子也跟着叫

为了写篇博客我容易吗???大半夜的,还要饱受你们的摧残,18岁的我承受了整个年纪不该有的善良........

勤勤恳恳更博的我,会被美食诱惑???

章鱼小丸子上校鸡块烤面筋麻辣鸭脖酸辣粉鳕鱼盖浇饭手抓饼瘦肉丸布丁巧克力奶茶寿司肉夹馍炒肝麦乐鸡烤鸡翅泡菜软心布丁乳酪烤肉火锅红烧排骨鸭脖土豆烧牛肉鱼丸炒拉条子大白兔奶糖驴肉火烧鸡米花酸菜鱼皮蛋瘦肉粥冰糖葫芦糖炒栗子豌豆黄烤红薯炸鸡

我来了...........

希望你们能感受到我的绝望..............

原文地址:https://www.cnblogs.com/yangyinyin/p/10817245.html

时间: 2024-11-02 23:24:06

再识网络编程的相关文章

Java学习之网络编程实例

转自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 多谢分享 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的.首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话号码

Java网络编程基础【转】

网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的.首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛,很简单的事情啊!其实初学者如果入门网络编程的话也可以做到这么简单! 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.

JAVA的网络编程【转】

网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的.首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛,很简单的事情啊!其实初学者如果入门网络编程的话也可以做到这么简单! 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作

JAVA的网络编程

网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的.首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛,很简单的事情啊!其实初学者如果入门网络编程的话也可以做到这么简单! 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.

网络编程基础分享

1.网络编程网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的.首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛,很简单的事情啊!其实初学者如果入门网络编程的话也可以做到这么简单! 网络编程就是在两个或两个以上的设备(例如计算机)之

【转】JAVA网络编程基础

转来自己学习用 转自http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的.首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电

java网络编程入门教程

网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的.首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛,很简单的事情啊!其实初学者如果入门网络编程的话也可以做到这么简单! 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.

再论关于如何学习网络编程

前些天在一个论坛上和一位朋友争论了学习网络编程的方法,而后发表了<TCP协议疑难杂症全景解析>,不算猛文,但也得到了一些回应,大家都是对Richard Stevens的两本书情有独钟:<TCP/IP详解(前两卷)>/<Unix网络编程>.我提出了自己的不同的声音,首先我不同意这两本书很重要,其次我觉得这两本书根本就不重要! 首先声明,本人并不是什么高手或者顶级黑客,也没有能力通过TCP/IP网络将电话免费盗打到梵蒂冈教皇那里,...只是稍微了解一些任何人本应该都了解的东

Android网络编程系列 一 TCP/IP协议族

在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必要进一步的了解,这就要我们了解网络通信层了,提到网络通信层不得不说起ISO-OSI的七层协议经典架构,如图所示: 上图的左边部分就是osi架构模型了, ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标