一、基于tcp协议套接字通信(简单版)
套接字socket:套接字是位于应用层与传输层之间,将传输层以下的协议都封装成接口,提供给应用层使用,应用层只需要调用socket的接口或者按照socket的标准编写程序自然遵循tcp/udp协议
服务端:
import socket # 1、买手机phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # tcp称为流式协议,udp称为数据报协议SOCK_DGRAM# print(phone) # 2、插入/绑定手机卡# phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)phone.bind((‘127.0.0.1‘, 8080)) # 3、开机phone.listen(5) # 半连接池,限制的是请求数 # 4、等待电话连接print(‘start....‘)conn, client_addr = phone.accept() # (三次握手建立的双向连接,(客户端的ip,端口))# print(conn)print(client_addr) # 5、通信:收\发消息data = conn.recv(1024) # 最大接收的字节数print(‘来自客户端的数据‘, data)conn.send(data.upper()) # import time# time.sleep(500)# 6、挂掉电话连接conn.close() # 7、关机phone.close() 客户端
import socket # 1、买手机phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)print(phone)# 2、拨电话phone.connect((‘127.0.0.1‘, 8080)) # 指定服务端ip和端口 # 3、通信:发\收消息phone.send(‘hello‘.encode(‘utf-8‘))# phone.send(bytes(‘hello‘,encoding=‘utf-8‘))data = phone.recv(1024)print(data) # import time# time.sleep(500)# 4、关闭phone.close() 二、基于tcp协议套接字通信(加上循环) 服务端
import socket #1、买手机phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #tcp称为流式协议,udp称为数据报协议SOCK_DGRAM# print(phone) #2、插入/绑定手机卡# phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)phone.bind((‘127.0.0.1‘,8080)) #3、开机phone.listen(5) # 半连接池,限制的是请求数 #4、等待电话连接print(‘start....‘)while True: # 连接循环 conn,client_addr=phone.accept() #(三次握手建立的双向连接,(客户端的ip,端口)) # print(conn) print(‘已经有一个连接建立成功‘,client_addr) #5、通信:收\发消息 while True: # 通信循环 try: print(‘服务端正在收数据...‘) data=conn.recv(1024) #最大接收的字节数,没有数据会在原地一直等待收,即发送者发送的数据量必须>0bytes # print(‘===>‘) if len(data) == 0:break #在客户端单方面断开连接,服务端才会出现收空数据的情况 print(‘来自客户端的数据‘,data) conn.send(data.upper()) except ConnectionResetError: break #6、挂掉电话连接 conn.close() #7、关机phone.close()
客户端
import socket # 1、买手机phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# print(phone)# 2、拨电话phone.connect((‘127.0.0.1‘, 8080)) # 指定服务端ip和端口 # 3、通信:发\收消息while True: # 通信循环 msg = input(‘>>: ‘).strip() # msg=‘‘ if len(msg) == 0: continue phone.send(msg.encode(‘utf-8‘)) data = phone.recv(1024) print(data) # 4、关闭phone.close()
原文地址:https://www.cnblogs.com/kingyanan/p/9291205.html
时间: 2024-08-04 15:10:12