python中socket实现TCP通信的介绍(附示例)

企鹅博客
企鹅博客
企鹅博客
25193
文章
0
评论
2020年9月1日06:08:19 评论 37 views

本篇文章给大家带来的内容是关于python中socket实现TCP通信的介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

TCP

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内 [1] 另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

下面是socket实现TCP通信的示意图,我们根据示意图来编写程序

TCP服务端

服务器进程首先要绑定一个端口并监听来自其他客户端的连接。 如果某个客户端连接过来了, 服务器就与该客户端建立Socket连接, 随后的通信就靠这个Socket连接了。

我们来编写一个简单的服务器程序, 它接收客户端连接,回复客户端发来的请求。

import socket
server = socket.socket()
server.bind(('192.168.1.165',8900))
#调用 listen() 方法开始监听端口, 传入的参数指定等待连接的最大数量
server.listen(4)
serObj,address = server.accept()
#当有客户端访问时,实现两边的交流,如果有一方退出,整个程序退出。
#服务器程序通过一个永久循环来接受来自客户端的连接
#这里虽然给出最大连接数为4,但单线程程序也只会响应一个连接
while True:
#建立连接后,服务端等待客户端发送的数据,实现通信
    re_data = serObj.recv(1024).decode('utf-8')
    print('client>>',re_data)
    if re_data == 'quit':
        break
    send_data = input('server>>')
    serObj.send(send_data.encode('utf-8'))
    if send_data == 'quit':
        break
serObj.close()
server.close()

TCP客户端

大多数连接都是可靠的TCP连接。 创建TCP连接时, 主动发起连接的叫客户端, 被
动响应连接的叫服务器。

举个例子, 当我们在浏览器中访问新浪时, 我们自己的计算机就是客户端, 浏览器会主动向新浪的服务器发起连接。 如果一切顺利, 新浪的服务器接受了我们的连接, 一个TCP连接就建立起来的, 后面的通信就是发送网页内容了。

客户端要主动发起TCP连接, 必须知道服务器的IP地址和端口号。

import socket
client = socket.socket()
client.connect(('192.168.1.165',8900))
while True:
    send_data = input("client>>")
    client.send(send_data.encode('utf-8'))
    if send_data == 'quit':
        break
    re_data = client.recv(1024).decode('utf-8')
    if re_data == 'quit':
        break
    print("server>>",re_data)

client.close()

用一个窗口运行客户端、另一个窗口运行服务端,可以更直观看见效果。
这里我的08_pra.py是服务端程序,09_pra.py是客户端程序

刚建立连接时的示意图

一次通信完成的示意图

以上就是python中socket实现TCP通信的介绍(附示例)的详细内容,更多请关注php教程其它相关文章!

继续阅读
企鹅博客
  • 本文由 发表于 2020年9月1日06:08:19
  • 转载请务必保留本文链接:https://www.qieseo.com/347260.html
css的一些小技巧!页面视觉差!_html/css_WEB-ITnose html教程

css的一些小技巧!页面视觉差!_html/css_WEB-ITnose

相当长的一段时间,现在网站与所谓的“视差”效果一直很受欢迎。 万一你没有听说过这种效果,不同的图像,在不同的方向移动或层主要包括。这导致了一个很好的光学效应,使参观者的注意。 在网页设计中,为了实现这...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: