Python入门(十五) socket编程
2015-08-25 00:48
483 查看
写过Socket网络编程的代码,大致都知道一个tcp服务器的主要步骤:socket-->bind-->listen-->accept-->recv/send-->close, tcp客户端的主要 步骤:socket-->connect-->recv/send-->close。有上述的了解的话,会觉得Python中的socket编程也是类似的。
以一个echo服务为例子,进行说明:
1)首先是服务端的代码:
2)echo客户端代码:
上述就是一个简单的echo服务,简单的展示了socket模块中的套接字编程的相关方法。
在实际的网络开发中,主要的模型有:多进程,多线程,事件驱动select/epoll,异步非阻塞。这些会在后面的文章中分别进行说明。
以一个echo服务为例子,进行说明:
1)首先是服务端的代码:
# This is a echo server. import socket import sys try: #1. create socket serv_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except socket.error: print("socket failed") sys.exit(-1) print("socket success") # serv_addr = ('127.0.0.1', 8080) host = '' port = 8000 #2. bind to 8000 port and listen serv_sock.bind((host, port)) serv_sock.listen(5) while True: #3. accept connection from client client_sock, client_addr = serv_sock.accept() print("connected by ", client_addr) while True: buf = client_sock.recv(10240) if not buf: print("Exit", client_addr) client_sock.close() break else: print("recv from client: ", buf) client_sock.send(buf)
2)echo客户端代码:
# This is a echo client. import socket import sys try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except socket.error: print('socket failed!') sys.exit(-1) print("socket success") # serv_addr = ('127.0.0.1', 8080) host = '127.0.0.1' port = 8000 try: sock.connect((host, port)) except socket.error: print("connect %s failed" % host) sys.exit(-1) while True: try: #message = "hello" message = input(">>") if not message: break else: sock.sendall(message.encode('utf8')) reply = sock.recv(10240) print('reply: %s' % reply.decode('utf8')) except EOFError: print("EOF\n") break print("Exit...") #sock.shutdown(socket.SHUT_RDWR) sock.close()
上述就是一个简单的echo服务,简单的展示了socket模块中的套接字编程的相关方法。
在实际的网络开发中,主要的模型有:多进程,多线程,事件驱动select/epoll,异步非阻塞。这些会在后面的文章中分别进行说明。
相关文章推荐
- 理解 Python 中的多线程
- 使用Python的Bottle框架写一个简单的服务接口的示例
- python3学习笔记--002--写一个类
- python3学习笔记--003--写一个自定义的包
- 利用Python监测MySQL主从状态
- Python的multiprocessing 实现多cpu 多进程
- python学习第四天
- python spark 配置
- python自我输出源程序
- 初学python,正则
- python中的split函数
- python笔记 6
- Class to connect postgres with python in psycopg2
- Python实现读取目录所有文件的文件名并保存到txt文件代码
- A daemon process class in python
- ant编译脚本执行python
- python之mock
- 有关python中的id,is 等
- 将Python脚本打包成可执行文件
- 将Python脚本打包成可执行文件