Python Network Programming
2024-10-09 00:41:45
@1: 同步网络编程(也就是阻塞方式)
同步网络编程一次只能连接一个客户端。
Server端:
import socket def debugPrint(name, value):
print("{0}: {1}".format(name, value)) def server():
#1:
server = socket.socket()
#NOTE: NOT "host = server.gethostname()"
host = socket.gethostname()
port = 8080
#2:
#NOTE: NOT "server.bind(host, port)" TypeError: bind() takes exactly one argument (2 given)
server.bind((host, port))
#3:
server.listen(3) #listen()的参数为允许等待的连接数
while 1:
#4:
client, address = server.accept() #accept()会阻塞,直到有客户端连接
debugPrint("client", client)
debugPrint("address", address)
#5:
client.send("Welcome!")
client.close() def main():
server()
Client端:
import socket
import server def client():
#1:
client = socket.socket()
host = socket.gethostname()
port = 8080
#2:
client.connect((host, port))
#3:
content = client.recv(1024)
server.debugPrint("From Server", content) def main():
client()
@2: 异步网络编程(也就是非阻塞方式)
异步网络编程, 允许多个客户端链接。
异步网络编程有3种实现方法: 分叉(多进程), 多线程,异步IO
分叉方式占据资源,windows不支持分叉; 多线程方式存在同步问题;
最新文章
- innodb 锁分裂继承与迁移
- 关于 Lua 内存泄漏的检测
- UCOS 请求任务删除函数 及其应用
- Ubuntu Crontab
- C语言char s[] 和 char *s的差别
- Android开展:ADT+Eclipse使用错误:Text editor does not have a document provider
- clone()方法、深复制和浅复制
- 从.Net版本演变看String和StringBuild性能之争
- Zeroc Ice开发环境搭建
- scala_2
- 61.H5---利用canvas+原生js进行鼠标跟随绘图
- Asp.Net MVC+EF+三层架构
- Redis入门的简单使用
- python(Django之Logging、API认证)
- Java面试总结(集合、spring)
- 从网上整理的一些delphi字符串加密解密方法
- t959 unknown device 解决办法
- 教你用PS修复老照片
- Notes of Daily Scrum Meeting(11.4)
- 【转】利用HTML5开发Android