1. 初识Socket

server和clinet之间的交互方式

2. 客户端和服务端的单次交互

 ====================================
服务端 import socket host = '127.0.0.1'
port = 8090
sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.bind((host,port))
sk.listen(1) conn,addr = sk.accept()
accept_data = conn.recv(1024).decode('UTF-8', 'ignore')
print(accept_data)
feedback_data =("回复\""+accept_data+"\":\n\t你好,我是Server端").encode("utf8")
conn.send(feedback_data)
 ======================================
客户端 import socket host = '127.0.0.1'
port = 8090 sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.connect((host,port)) sk.sendall(("你好,我是Client @Simple").encode("utf8"))
data = sk.recv(1024)
print(data.decode('UTF-8', 'ignore'))

3. 客户端和服务端单线程交互

 服务端

 import socket

 host = '127.0.0.1'
port = 8090
sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.bind((host,port))
sk.listen(1) while True:
conn,addr = sk.accept()
while True:
accept_data = conn.recv(1024).decode('UTF-8', 'ignore')
if not accept_data:
break
print(accept_data)
feedback_data =("回复\""+accept_data+"\":\n\t你好,我是Server端").encode("utf8")
conn.sendall(feedback_data) conn.close()
 客户端

 import socket,time

 host = '127.0.0.1'
port = 8090 sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.connect((host,port)) for i in range(10):
sk.sendall(("你好,我是Client No.%d" %i).encode("utf8"))
data = sk.recv(1024)
print(data.decode('UTF-8', 'ignore'))
time.sleep(2)
i = i + 1
sk.close()

4. 多个客户端和服务端的多线程交互

 服务端

 import socketserver

 class myTCPhandler(socketserver.BaseRequestHandler):
def handle(self):
while True:
self.data = self.request.recv(1024).decode('UTF-8', 'ignore').strip()
if not self.data : break
print(self.data)
self.feedback_data =("回复\""+self.data+"\":\n\t你好,我是Server端").encode("utf8")
self.request.sendall(self.feedback_data) host = '127.0.0.1'
port = 9090
server = socketserver.ThreadingTCPServer((host,port),myTCPhandler)
server.serve_forever()
 客户端1-n

 import socket,time

 host = '127.0.0.1'
port = 9090 sk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sk.connect((host,port)) for i in range(10):
sk.sendall(("你好,我是Client No.%d" %i).encode("utf8"))
data = sk.recv(1024)
print(data.decode('UTF-8', 'ignore'))
time.sleep(2)
i = i + 1
sk.close()

最新文章

  1. Android 捕获异常并在应用崩溃后重启应用
  2. amazeui折叠面板智能化展开
  3. 04OC之分类Category,协议Protocol,Copy,代码块block
  4. CSS使用position定位后导致元素浮动
  5. 怎么通过 Mysql 实现数据同步呢?
  6. 使用Xamarin.Forms平台开发移动应用指南
  7. 仿微软控件的html元素
  8. 迅为iTOP-4412开发板Ubuntu操作系统烧写方法
  9. javaScript基础练习题-下拉框制作(CSS)
  10. font awesome的图标在WP8浏览器下无法显示的问题解决
  11. Oracle中not exists 与not in 的使用情况
  12. Unsupported major.minor version 52.0 处理方式
  13. 利用netstat和tasklist查看PC的端口占用情况
  14. 在 window7 window8下公布webService注意问题
  15. csu1010: Water Drinking
  16. USACO Section 1.2 Palindromic Squares 解题报告
  17. Oracle用户的初始化问题
  18. hdu 2066 最短路水题
  19. [Swift]LeetCode845. 数组中的最长山脉 | Longest Mountain in Array
  20. Python字符编码以及循环机制介绍

热门文章

  1. jquery对不同id的按钮执行同一类型的操作
  2. Ubuntu 设置 sudo 开机自启动项 无需输入密码
  3. javascript 中的类数组和数组
  4. js_模块化
  5. 用Qemu模拟vexpress-a9 (一) --- 搭建Linux kernel调试环境【转】
  6. 使用Netcat进行攻击
  7. Linux Kernel sys_call_table、Kernel Symbols Export Table Generation Principle、Difference Between System Calls Entrance In 32bit、64bit Linux【转】
  8. 使用Python扫描网络MAC地址对应的IP地址
  9. 【前端vue开发】vue开发watch检测的使用
  10. Codeforces 264B Good Sequences(DP+素数筛)