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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 怀孕5个多月总是咳嗽尿失禁怎么办 怀孕7个月感冒了怎么办 怀孕7个月感冒喉咙痛怎么办 孕38周感冒咳嗽喉咙痛怎么办 嗓子痛咳嗽有痰怎么办 怀孕6个月了咳嗽怎么办 怀孕了咳嗽黄痰怎么办 科二5次没考过怎么办 交警开的罚单丢了怎么办 驾驶员从业资格证被水洗了怎么办 驾照考五次没过怎么办 学车每次考不过怎么办 年检超期3个月怎么办 年检超过3个月怎么办 工商执照年检时候忘记密码怎么办 个体工商营业执照年检过期怎么办 忘了审车时间怎么办 汽车年检超过时间了怎么办 星巴克金星会员到期怎么办 驾考学员证丢了怎么办 违章扣满12分怎么办 违章扣满12分后怎么办 东方时尚驾校科二考不过怎么办 东方时尚科二科三考五次没过怎么办 不想考科目三了怎么办 科目三两次没过怎么办 练科目三很紧张怎么办 驾照学员卡丢了怎么办 驾考时考试的车系统出错怎么办 驾驶证超期6个月怎么办 北京汽车年检只有电子保单怎么办 交电费户号9位数怎么办 扬州驾照12分扣完了怎么办 有大专毕业证在深圳怎么办居住证 微信解释包错误怎么办 富士康离职不批怎么办 到了怀孕年龄找不到工作怎么办 建筑公司挂靠发生人员伤残怎么办 外地生小孩落北京户口怎么办 户籍档案查不到直系亲属关系怎么办 考过了二建注册怎么办