基于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()

最新文章

  1. 使用po模式读取豆瓣读书最受关注的书籍,取出标题、评分、评论、题材 按评分从小到大排序并输出到txt文件中
  2. uniq-删除重复
  3. UILabel,UITextField,UIButton三大基础控件总结
  4. bootstrap之Flick
  5. Jackson 框架,轻易转换JSON【转】
  6. java中的vo、dto 、dao
  7. 小白的Python之路 day1 Python3的bytes/str之别
  8. 修改win7系统sid
  9. [Swift]LeetCode496. 下一个更大元素 I | Next Greater Element I
  10. Xamarin打包
  11. 微信H5开发
  12. Xpath定位方法深入探讨及元素定位失败常见情况
  13. c# 中config.exe 引发的一些问题
  14. 使用原生Java代码生成可执行Jar包
  15. 制作基于U盘启动和网络常识
  16. 取出csv文件中的中文评论数据
  17. eclipse生成jar包 注意事项!
  18. Selenium自动化测试第一天(上)
  19. Moodle 3.4中添加小组、大组、群
  20. 3 Python os 文件和目录

热门文章

  1. 利用Azure虚拟机安装Dynamics 365 Customer Engagement之二:创建域控虚拟机
  2. 从0系统学Android-2.4 Activity 的生命周期
  3. Swift零基础教程2019最新版(一)搭建开发环境
  4. 设置API:wx.openSetting,wx.getSetting使用说明(示例:地图授权与取消授权后的重新授权)
  5. 利用Flask中的werkzeug.security模块加密
  6. TensorFlow从1到2(十一)变分自动编码器和图片自动生成
  7. Codeforces Round #594 (Div. 2)
  8. 搭建Tomcat服务器访问本地资源
  9. 巧妙利用selenium中的JS操作来处理特殊的文本框
  10. 解决root用户下都无权限操作的问题