【计算机网络】python——socket编程(TCP/UDP)

前言

以前做了实验都是直接分享实验报告。反思了一下,实验报告又臭又长,最多只有同做这个实验的朋友会耐着性子看一看。为了提供更有效的知识分享,能为更多的朋友提供一些参考,以后的文章我都会尽量主题鲜明,简洁易读哒。


目录

  • 前言
  • 一.Socket
  • 二.采用TCP进行数据发送的简单程序(python)
        • C-S之间的动作次序
        • Server:
        • Client:
        • 测试
  • 三.采用UDP进行数据发送的简单程序(python)
        • C-S之间的动作次序
        • Server:
        • Client:
        • 测试
  • 四.参考资料
  • 五.总结

一.Socket

Socket(套接字)是一种抽象层,应用程序通过它来发送和接收数据,就像应用程序打开一个文件句柄,将数据读写到稳定的存储器上一样。一个socket允许应用程序添加到网络中,并与处于同一个网络中的其他应用程序进行通信。一台计算机上的应用程序向socket写入的信息能够被另一台计算机上的另一个应用程序读取,反之亦然。
不同类型的socket与不同类型的底层协议族以及同一协议族中的不同协议栈相关联。现在TCP/IP协议族中的主要socket类型为流套接字(sockets sockets)和数据报套接字(datagram sockets)。流套接字将TCP作为其端对端协议(底层使用IP协议),提供了一个可信赖的字节流服务。一个TCP/IP流套接字代表了TCP连接的一端。数据报套接字使用UDP协议(底层同样使用IP协议),提供了一个”尽力而为”(best-effort)的数据报服务,应用程序可以通过它发送最长65500字节的个人信息。一个TCP/IP套接字由一个互联网地址,一个端对端协议(TCP或UDP协议)以及一个端口号唯一确定。

二.采用TCP进行数据发送的简单程序(python)

服务器首先运行,等待连接建立

1.服务器进程必须先处于运行状态

  • 创建欢迎socket
  • 和本地端口绑定
  • 在欢迎socket上阻塞式等待接收用户的链接

客户端主动和服务器建立连接

2.创建客户端本地套接字(隐式捆绑到本地port)

  • 指定服务器进程的IP地址和端口号,与服务器进程连接

3.连接API调用有效时,客户端P与服务器建立了TCP连接

4.当与客户端连接请求到来时

  • 服务器接受来自用户端的请求,接触阻塞式等待,返回一个新的socket(与欢迎socket不一样),与客户端通信

C-S之间的动作次序

  1. 服务器运行,并打印准备好接收
  2. 客户端从标准输入装置读取一行字符,发送给服务器
  3. 服务器从socket读取字符然后打印出来
  4. 客户端输入1 结束连接

Server:

IP使用回环地址127.0.0.1。 是一个特殊的IP地址,表示本机地址,如果绑定到这个地址,客户端必须同时在本机运行才能连接,也就是说,外部的计算机无法连接进来。

端口号小于1024的是Internet标准服务的端口,端口号大于1024的,可以任意使用。 只要确保客户端和服务器使用的是同一组端口即可

创建时,指定使用IPv4协议,如果要用更先进的IPv6,就指定为。指定使用面向流的TCP协议

listen(n)传入的值, n表示的是服务器拒绝(超过限制数量的)连接之前,操作系统可以挂起的最大连接数量。n也可以看作是”排队的数量”

Client:

客户端和服务器端差别不大,就不赘述解释了

测试

【计算机网络】python——socket编程(TCP/UDP)

四.参考资料

1.HUN《计算机网络》实验方案
2.b站中科大郑老师的网课PPT
3.《计算机网络-自顶向下方法》
4.CSDN的优秀博主(抱歉前几天看的,忘存ID了 o(╥﹏╥)o)

五.总结

纸上学来终觉浅,绝知此事要躬行
快敲代码试试叭

文章知识点与官方知识档案匹配,可进一步学习相关知识网络技能树认识身边的计算机网络常见的网络设备22086 人正在系统学习中

来源:hnu后湖十级爱好者

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月23日
下一篇 2022年10月23日

相关推荐