python socket实例
服务端套接字函数
s.bind() 绑定(主机,端口号)到套接字 、s.listen() 开始TCP监听、s.accept() 被动接受TCP客户的连接,(阻塞式)等待连接的到来。
s.close() 关闭服务器。con.close()关闭链接
import socket # 明确配置变量 ip_port = ('127.0.0.1',8080) back_log = 5 buffer_size = 1024 # 创建一个TCP套接字 ser = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 套接字类型AF_INET, socket.SOCK_STREAM tcp协议,基于流式的协议 ser.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # 对socket的配置重用ip和端口号 # 绑定端口号 ser.bind(ip_port) # 写哪个ip就要运行在哪台机器上 # 设置半连接池 ser.listen(back_log) # 最多可以连接多少个客户端 while 1: # 阻塞等待,创建连接 con,address = ser.accept() # 在这个位置进行等待,监听端口号 while 1: try: # 接受套接字的大小,怎么发就怎么收 msg = con.recv(buffer_size) if msg.decode('utf-8') == '1': # 断开连接 con.close() print('服务器收到消息',msg.decode('utf-8')) except Exception as e: break # 关闭服务器 ser.close()
客户端:p.connect(ip地址,端口号) 连接服务器
import socket p = socket.socket(socket.AF_INET,socket.SOCK_STREAM) p.connect(('127.0.0.1',8080)) while 1: msg = input('please input') # 防止输入空消息 if not msg: continue p.send(msg.encode('utf-8')) # 收发消息一定要二进制,记得编码 if msg == '1': break p.close()
简单一次发送接收版:
#server端 import socket tcpserver = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #建立 tcpserver.bind(("127.0.0.1",10000)) #绑定 tcpserver.listen(5) #监听 conn,addr = tcpserver.accept() #阻塞等待连接 data = conn.recv(1024) #接收 print(data.decode("utf-8")) conn.send(data.upper()) #发送 conn.close() #关闭连接 tcpserver.close() #关闭 #client端 import socket tcpclient = socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcpclient.connect(("127.0.0.1",10000)) #连接 data=input(">:") tcpclient.send(data.encode("utf-8")) #发送 ret=tcpclient.recv(1024) #接收 print(ret.decode("utf-8")) tcpclient.close()
循环接收发送信息示例:
#循环接收发送信息版 #server端 import socket tcpserver = socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcpserver.bind(("127.0.0.1", 10000)) tcpserver.listen(5) while True: conn,addr = tcpserver.accept() print(conn) while True: try: data = conn.recv(1024) print('.....',data.decode("utf-8")) conn.send(data.upper()) except Exception: break conn.close() tcpserver.close() #客户端 import socket tcpclient = socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcpclient.connect(("127.0.0.1",10000)) while 1: while 1: data = input('>>>').strip() tcpclient.send(data.encode('utf-8')) ret = tcpclient.recv(1024) print(ret.decode('utf-8'))
相关连接:
https://blog.csdn.net/weixin_43347550/article/details/106199850 ....................................socket实现文件传输
https://blog.csdn.net/s1054436218/article/details/78076845 ...........................................Socket实现文件上传和下载
https://www.jianshu.com/p/2a4b859e05df .........................................................................socket实现文件传输
浙公网安备 33010602011771号