Python socket 编程入门
来源:互联网 发布:java 代码生成器插件 编辑:程序博客网 时间:2024/06/16 09:08
TCP服务器
所有的套接字都用 socket.socket()函数来创建。服务器需要“坐在某个端口上”等待请求。所
以它们必需要“绑定”到一个本地的地址上。由于 TCP 是一个面向连接的通讯系统,在 TCP 服务器
可以开始工作之前,要先完成一些设置。TCP 服务器必需要“监听”(进来的)连接,设置完成之后,
服务器就可以进入无限循环了。
一个简单的(单线程的)服务器会调用 accept()函数等待连接的到来。默认情况下,accept()
函数是阻塞式的,即程序在连接到来之前会处于挂起状态。
HOST 变量为空,表示 bind()函数可以绑定在所有有效的地址上。我们还选用了一个随机生成的
未被占用的端口号。在程序中,我们把缓冲的大小设定为 1K。你可以根据你的网络情况和应用的需
要来修改这个大小。
from socket import * from time import ctime HOST='' PORT=21567 BUFSIZ=1024 ADDR=(HOST,PORT) tcpSerSock = socket(AF_INET,SOCK_STREAM) # 创建一个服务器套接字 tcpSerSock.bind(ADDR) # 把地址绑定到套接字tcpSerSock.listen(5) # 监听连接 ,listen()函数的参数只是表示最多允许多少个连接同时连进来,后来的连接就会被拒绝掉。 while True: # 服务器无限循环 print 'waiting for connection...' tcpCliSock,addr=tcpSerSock.accept() # 接受客户的连接 print '...connection from',addr while True: data=tcpCliSock.recv(BUFSIZ) # 对话(接收) if not data: break tcpCliSock.send('[%s] %s' %(ctime(),data)) # 对话(发送) print [ctime()],':',data tcpCliSock.close() tcpSerSock.close()
TCP客户端
在客户有了套接字之后,马上就可
以调用 connect()函数去连接服务器。连接建立后,就可以与服务器开始对话了。在对话结束后,客
户就可以关闭套接字,结束连接。
HOST 和 PORT 变量表示服务器的主机名与端口号。由于我们在同一台电脑上进行测试,所以 HOST
里放的是本机的主机名(如果你的服务器运行在其它电脑上,要做相应的修改)。端口号要与服务器
上的设置完全相同(不然就没办法通讯了)。
from socket import * from time import ctime HOST='localhost' PORT=21567 BUFSIZ=1024 ADDR=(HOST,PORT) tcpCliSock = socket(AF_INET,SOCK_STREAM) # 创建客户套接字tcpCliSock.connect(ADDR) # 尝试连接服务器 while True: # 通讯循环 data=raw_input('>') if not data: break tcpCliSock.send(data) # 对话(发送) data=tcpCliSock.recv(BUFSIZ) # 对话(接收) if not data: break print data tcpCliSock.close()
socketserver服务器
SocketServer 是标准库中一个高级别的模块。封装起来了。
from SocketServer import (TCPServer as TCP, StreamRequestHandler as SRH)from time import ctime HOST = ''PORT = 12346ADDR = (HOST, PORT) class MyRequestHandler(SRH): def handle(self): print '...connected from:', self.client_address self.wfile.write('[%s] %s' % (ctime(), self.rfile.readline())) tcpServ = TCP(ADDR, MyRequestHandler)print 'waiting for connection...'tcpServ.serve_forever()
socketserver客户端
from socket import * HOST = 'localhost'PORT = 12346BUFSIZE = 1024ADDR = (HOST, PORT) while True: tcpCliSock = socket(AF_INET, SOCK_STREAM) tcpCliSock.connect(ADDR) data = raw_input('>') if not data: break tcpCliSock.send('%s\r\n' % data) data = tcpCliSock.recv(BUFSIZE) if not data: break print data.strip() tcpCliSock.close()
0 0
- Python socket 编程入门
- Python入门:socket编程
- [Python]网络编程--socket入门
- Python入门:tcp socket编程
- Python Socket通讯编程入门
- python socket编程入门(一)
- Python案例-网络编程-socket入门-server&client
- python socket编程入门(编写server实例)
- python socket编程入门(编写server实例)
- Python socket 入门
- python socket 入门
- Python 之 socket 入门
- python入门(三十四):socket
- 网络编程入门-socket
- socket编程入门
- socket编程入门
- Socket编程简单入门
- c++ socket编程入门
- Python基础04 运算
- tslib使用+NewSTO目标板经验
- 打开图片,提示:该文件没有程序与之关联来执行该操作。请在控制面板的文件夹选项中创建关联
- uC/OS-II内核架构解析(7)---uC/OS-II应用开发
- arm-none-eabi-g++: error: nano.specs: No such file or directory
- Python socket 编程入门
- Linux kernel memory management (ARM)
- 与你共享,简单分享。ShareREC手游录像SDK公开下载!
- ubuntu下matlab安装心得
- Python基础05 缩进和选择
- 题目1461:Tempter of the bone
- JDBC 批量操作
- Python基础06 循环
- Python基础07 函数