当前第2页 返回上一页
实例1:使用socketserver实现与上面socket()实例一样的功能
服务端程序代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import socketserver
import time
HOST = '127.0.0.1'
PORT = 8009
ADDR = (HOST,PORT)
BUF_SIZE = 1024
class Myserver(socketserver.BaseRequestHandler):
def handle( self ):
while True :
print ( "...connected from:" , self .client_address)
data = self .request.recv(BUF_SIZE)
if not data: break
self .request.send(bytes( "%s %s" % (time.ctime(),data)))
server = socketserver.ThreadingTCPServer(ADDR,Myserver)
print ( "waiting for connection..." )
server.serve_forever()
|
11~17行
主要的工作在这里。从socketserver的BaseRequestHandler类中派生出一个子类,并重写handle()函数。
在有客户端发进来的消息的时候,handle()函数就会被调用。
19~21行
代码的最后一部分用给定的IP地址和端口加上自定义处理请求的类(Myserver)。然后进入等待客户端请求与处理客户端请求的无限循环中。
客户端程序代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import socket
HOST = '127.0.0.1'
PORT = 8009
ADDR = (HOST,PORT)
BUF_SIZE = 1024
client = socket.socket()
client.connect(ADDR)
while True :
data = input ( ">>> " )
if not data: continue
client.send(bytes(data,encoding = 'utf-8' ))
recv_data = client.recv(BUF_SIZE)
if not recv_data: break
print (recv_data.decode())
client.close()
|
执行服务端和客户端代码
下面是客户端输出
1 2 3 4 5 | [root@pythontab]
>>> hello python
Thu Sep 15 23:53:31 2016 b 'hello python'
>>> hello pythontab
Thu Sep 15 23:53:49 2016 b 'hello pythontab'
|
下面是服务端输出
1 2 3 4 5 6 | [root@pythontab]
waiting for connection...
...connected from: ( '127.0.0.1' , 55385)
...connected from: ( '127.0.0.1' , 55385)
...connected from: ( '127.0.0.1' , 55385)
...connected from: ( '127.0.0.1' , 55385)
|
以上就是python中socket模块详解的详细内容,更多文章请关注木庄网络博客!!
返回前面的内容
相关阅读 >>
Python里fd是什么意思
Python压缩文件的效率高吗?
Python中什么是运算符
七种基础的Python运算符
学习Python将中文数字转化成阿拉伯数字
Python是什么意思?怎么读?
Python中class是什么意思
Python 语法串联
解析实例讲解什么是Python random模块
Python导入csv文件出现syntaxerror问题分析_Python
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » python中socket模块详解