基于TCP连接的socket套接字编程
2024-09-01 08:02:07
基于TCP协议的套接字编程(简单)
服务端
import socket
server = socket.socket()
server.bind(
('127.0.0.1', 9999)
)
server.listen(5)
conn, addr = server.accept()
print(addr)
data = conn.recv(1024).decode('utf-8')
print(data)
conn.send('来自服务端消息:我不好'.encode('utf-8'))
conn.close()
server.close()
客户端
import socket
client = socket.socket()
client.connect(
('127.0.0.1', 9999)
)
client.send('来自客户端消息:你好'.encode('utf-8'))
data = client.recv(1024).decode('utf-8')
print(data)
client.close()
基于TCP协议的套接字编程(复杂)
服务端
import socket
server = socket.socket()
server.bind(
('127.0.0.1', 9999)
)
server.listen(5)
conn, addr = server.accept()
print(addr)
while True:
# 接收客户端发送来的消息
data = conn.recv(1024).decode('utf-8')
print(data)
if data == 'q':
break
send_msg = input('server--->client: ').encode('utf-8')
conn.send(send_msg)
conn.close()
server.close()
客户端
import socket
client = socket.socket()
client.connect(
('127.0.0.1', 9999)
)
while True:
send_msg = input('client---> server:')
client.send(send_msg.encode('utf-8'))
if send_msg == 'q':
break
# 服务端返回的数据
data = client.recv(1024).decode('utf-8')
print(data)
client.close()
服务端服务多个客户
服务端
import socket
server = socket.socket()
server.bind(
('127.0.0.1', 8888)
)
server.listen(5) # 半连接数,等待的用户
while True:
conn, addr = server.accept()
print(addr)
while True:
try:
data = conn.recv(1024).decode('utf-8')
print(data)
# mac\linux的bug:b''
if len(data) == 0:
continue
if data == 'q':
break
send_msg = input('server--->client:').encode('utf-8')
conn.send(send_msg)
except Exception as e:
print(e)
break
conn.close()
客户端
import socket
client = socket.socket()
client.connect(
('127.0.0.1', 8888)
)
while True:
send_msg = input('client--->server:')
client.send(send_msg.encode('utf-8'))
if send_msg == 'q':
break
data = client.recv(1024).decode('utf-8')
print(data)
client.close()
最新文章
- 使用po模式读取豆瓣读书最受关注的书籍,取出标题、评分、评论、题材 按评分从小到大排序并输出到txt文件中
- uniq-删除重复
- UILabel,UITextField,UIButton三大基础控件总结
- bootstrap之Flick
- Jackson 框架,轻易转换JSON【转】
- java中的vo、dto 、dao
- 小白的Python之路 day1 Python3的bytes/str之别
- 修改win7系统sid
- [Swift]LeetCode496. 下一个更大元素 I | Next Greater Element I
- Xamarin打包
- 微信H5开发
- Xpath定位方法深入探讨及元素定位失败常见情况
- c# 中config.exe 引发的一些问题
- 使用原生Java代码生成可执行Jar包
- 制作基于U盘启动和网络常识
- 取出csv文件中的中文评论数据
- eclipse生成jar包 注意事项!
- Selenium自动化测试第一天(上)
- Moodle 3.4中添加小组、大组、群
- 3 Python os 文件和目录
热门文章
- 利用Azure虚拟机安装Dynamics 365 Customer Engagement之二:创建域控虚拟机
- 从0系统学Android-2.4 Activity 的生命周期
- Swift零基础教程2019最新版(一)搭建开发环境
- 设置API:wx.openSetting,wx.getSetting使用说明(示例:地图授权与取消授权后的重新授权)
- 利用Flask中的werkzeug.security模块加密
- TensorFlow从1到2(十一)变分自动编码器和图片自动生成
- Codeforces Round #594 (Div. 2)
- 搭建Tomcat服务器访问本地资源
- 巧妙利用selenium中的JS操作来处理特殊的文本框
- 解决root用户下都无权限操作的问题