python网络编程 - tcp,tcp网络编程,网络编程低级别的网络
python网络编程 - tcp,tcp网络编程,网络编程低级别的网络
网络编程
低级别的网络服务
高级别的网络服务
socket又称“套接字”,应用程序通过“套接字”向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。
python代码实现
服务端
流程
1、socket创建一个套接字2、bind绑定ip和port3、listen 使套接字变为可以被动链接(默认创建的套接字是主动去链接别人的)4、accept 等待客户端的链接(accept和客户端的connect是一对,服务器的accept只响应客户端的connect)5、send/recv 发送和接收数据(recv和send是一夫多妻,服务器的recv响应客户端的send,也响应客户端socket的close;反之亦然)。有一个好玩的事情,当某一端send空数据的时候,另一端recv并没有响应,而当close的时候,recv却是能响应的,不过数据为空,猜测是send不能发送空数据代码
import socketimport sys# 创建socket对象
# family:套接字家族,AF_UNIX或者AF_INET(默认)
# type:套接字类型,面向连接的还是面向非连接的,SOCK_STREAM(默认)或者SOCK_DGRAM
# protocol:一般不填默认为0
socket_obj = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#获取本地主机名,或者使用iphost = socket.gethostname()port = 9999# 重用ip和端口,防止报“Address already in user” 的错误sobj.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)#绑定端口,参数是一个元组socket_obj.bind((host,port))#设置最大连接数,超过后排队socket_obj.listen(5) while True: #创建客户端连接 clientsocket,addr = socket_obj.accept() print(‘连接地址:%s‘%str(addr)) clientsocket.send("hello".encode(‘utf-8‘)) clientsocket.close()
客户端
import socketimport sys #创建socket对象s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#获取本地主机名host = socket.gethostname()#设置端口号port = 9999#连接服务,指定主机和端口s.connect((host,port))#接收小于1024字节的数据msg = s.recv(1024) s.close()print(msg.decode(‘utf-8‘))
python网络编程 - tcp
相关内容
- python查看df并输出,pythondf,import osi
- Python3 tkinter基础 Button text,fg 按钮上显示的文字 文字的
- 天气变冷了,给父母制作一个天气提醒小助手,
- 快速排序的python实现,用python实现快速排序,def sort1(
- python中的装饰器,python缓存装饰器,装饰器: 在不
- Python中输入和输出(打印)数据,数据的输入与输出
- python之面向对象,python是面向对象吗,(一)构造方法和
- python 学习_基础语法__练习,,1. 简述编译型与解
- python不同目录间模块调用,python模块调用,前置:sys.p
- Python学习问题记录,,在学习Python的
评论关闭