首页 > 技术文章 > python socket实例练习

logicalsky 2016-10-18 10:25 原文

  Web Server是基于Socket编程,又称之为网络编程,socket是网络编程接口,socket可以建立网络连接,读数据,写数据。socket模块定义了一些常量参数,用来指定socket的的地址族、socket的类型、以及支持的TCP/IP协议。

  有一篇写的比较详细的关于HTTP协议请求过程和socket的文章,链接:http://www.admin10000.com/document/9347.html

  简单实例测试socket, 代码如下:

 1 from socket import socket, AF_INET, SOCK_STREAM
 2 from threading import Thread
 3 
 4 port = 50008
 5 host = 'localhost'
 6 
 7 def server():
 8     # 建立tcp连接
 9     sock = socket(AF_INET, SOCK_STREAM)
10     # 绑定本机和端口
11     sock.bind(('', port))
12     # 监听,允许连接的客户数量
13     sock.listen(5)
14     while True:
15         # 等待客户端连接
16         conn, addr = sock.accept()
17         # 读取客户端请求的字节数据
18         data = conn.recv(1024)
19         # 响应请求给客户端
20         reply = 'server got [%s]' % data
21         conn.send(reply.encode())
22 
23 def client(name):
24     sock = socket(AF_INET, SOCK_STREAM)
25     sock.connect((host, port))
26     sock.send(name.encode())
27     reply = sock.recv(1024)
28     sock.close()
29     print('client got [%s]' % reply)
30 
31 if __name__ == '__main__':
32     sthread = Thread(target=server)
33     sthread.daemon = True
34     sthread.start()
35     for i in range(5):
36         Thread(target=client, args=('client%s' % i, )).start()

  运行结果如下:

1 client got [b"server got [b'client0']"]
2 client got [b"server got [b'client1']"]
3 client got [b"server got [b'client2']"]
4 client got [b"server got [b'client3']"]
5 client got [b"server got [b'client4']"]

 

推荐阅读