python_网络编程socket(TCP)
2024-09-05 03:42:36
服务端:
import socket
sk = socket.socket() #创建对象
sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #避免服务器重启时报address already in use错误
sk.bind(('127.0.0.1',8877)) #把地址绑定到套接字(ip地址,端口号)
sk.listen() #监听链接
conn,addr = sk.accept() #接受客户端链接
ret = conn.recv(1024) #接受客服端信息(数据长度)
print(ret) #打印客户端信息
conn.send(b'hi') #向客户端发送星系(必须是bytes类型)
conn.close() #关闭客户端连接
sk.close() #关闭服务器套接字
客户端:
import socket
sk = socket.socket() #创建对象
sk.connect(('127.0.0.1',8877)) #连接服务器(ip地址,端口号)
sk.send(b'hello') #向服务器发送信息(必须是bytes类型) ret = sk.recv(1024) #接收信息(数据大小)
print(ret) #打印信息
sk.close() #关闭对象
有收必有发,收发必相等,send和rexv必须是对应的
send ----- recv
send ----- recv
recv ----- send
传递中文:
# 服务端
# 接收中文
ret = conn.recv(1024).encode('utf-8')
print(ret) #打印
# 发送中文
conn.send(bytes('七点半',encoding='utf-8')) # 客户端
# 发送中文
sk.send(bytes('几点了'.encode('utf-8')))
# 接收中文
ret = sk.recv(1024).encode('utf-8')
print(ret) #打印
实例:聊天
服务端:
import socket
sk = socket.socket() #创建对象
sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #避免服务器重启时报address already in use错误
sk.bind(('127.0.0.1',8877)) #把地址绑定到套接字(ip地址,端口号)
sk.listen() #监听链接
conn,addr = sk.accept() #接受客户端链接 while True:
ret = conn.recv(1024).decode('utf-8')
print(ret)
if ret == 'bye':
conn.send(b'bye')
break
info = input('>>>')
conn.send(bytes(info,encoding='utf-8')) conn.close() #关闭客户端连接
sk.close() #关闭服务器套接字
客户端:
import socket
sk = socket.socket() #创建对象
sk.connect(('127.0.0.1',8877)) #连接服务器(ip地址,端口号) while True:
info = input('>>>')
sk.send(bytes(info,encoding='utf-8'))
ret = sk.recv(1024).decode('utf-8')
print(ret)
if ret == 'bye':
sk.send(b'bye')
break sk.close() #关闭对象
最新文章
- MongoDB常用操作--集合2
- youtube下载
- 【Infomatica】Infomatica PowerCenter 9.1.0配置Repository Service和Integration Service小结
- 关于优化sql查询的一个方法。
- supersocket中quickstart文件夹下的MultipleCommandAssembly的配置文件分析
- 【原】实验室签到PHP版本
- 如何使用validate.js进行动态添加和移除表单验证信息
- SSH框架应用中常用Jar包用途介绍
- 【HDOJ】5096 ACM Rank
- android 26 设置项目有多个入口Activity。
- MVC 4
- MySql数据库在表中添加新字段,设置主键,设置外键,字段移动位置,以及修改数据库后如何进行部署和维护的总结
- Docker 列出镜像
- Win7 系统记事本乱码及cmd闪退解决办法
- 神经网络训练tricks
- js实现table用鼠标改变td的宽度,固定table宽度和高度超过显示点
- MVC和MVVM对比
- nginx 配置简单网站项目(linux下)
- c++11の的左值、右值以及move,foward
- 我的物联网项目专题移到网站:http://51jdk.com
热门文章
- [转帖]Nginx为什么高效?一文搞明白Nginx核心原理
- Spring IoC 详解(四)
- Feign【替换默认的feign client】
- Centos7.3安装jenkins
- WUSTOJ 1274: 喂,这里是帅帅的LCM(Java)
- 牛客 82E 无向图中的最短距离 (bitset,bfs)
- 用python将项目中的所有代码(或txt)合并在一个文件中
- Mysql的实现原理
- 查准率(precision)和查全率(recall)
- webapi IHttpActionResult无引用和config.MapHttpAttributeRoutes()无引用解决办法