扣丁学堂python视频教程之socket使用实例详解

2018-01-22 09:59:01 490浏览

今天扣丁学堂给大家详细介绍一下关于python视频教程之socket使用实例,首先Python在网络通讯方面功能强大,学习一下Socket通讯的基本方式吧。下面我们一起来看一下吧。



UDP通讯:

Server:

importsocket

port=8081

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

#从指定的端口,从任何发送者,接收UDP数据

s.bind(('',port))

print('正在等待接入...')

whileTrue:

#接收一个数据

data,addr=s.recvfrom(1024)

print('Received:',data,'from',addr)

Client:

importsocket

port=8081

host='localhost'

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

s.sendto(b'hello,thisisatestinfo!',(host,port))

很简单。下面是TCP方式:

Server:

#-*-coding:utf-8-*-

fromsocketimport*

fromtimeimportctime

HOST=''

PORT=12345

BUFSIZ=1024

ADDR=(HOST,PORT)

sock=socket(AF_INET,SOCK_STREAM)

sock.bind(ADDR)

sock.listen(5)

whileTrue:

print('waitingforconnection')

tcpClientSock,addr=sock.accept()

print('connectfrom',addr)

whileTrue:

try:

data=tcpClientSock.recv(BUFSIZ)

except:

print(e)

tcpClientSock.close()

break

ifnotdata:

break

s='Hi,yousendme:[%s]%s'%(ctime(),data.decode('utf8'))

tcpClientSock.send(s.encode('utf8'))

print([ctime()],':',data.decode('utf8'))

tcpClientSock.close()

sock.close()

Client:

#-*-coding:utf-8-*-

fromsocketimport*

classTcpClient:

HOST='127.0.0.1'

PORT=12345

BUFSIZ=1024

ADDR=(HOST,PORT)

def__init__(self):

self.client=socket(AF_INET,SOCK_STREAM)

self.client.connect(self.ADDR)

whileTrue:

data=input('>')

ifnotdata:

break

self.client.send(data.encode('utf8'))

data=self.client.recv(self.BUFSIZ)

ifnotdata:

break

print(data.decode('utf8'))

if__name__=='__main__':

client=TcpClient()

上面的TCP方式有个问题,不能退出,好吧,我们改造一下,使这个程序可以发送quit命令以退出:

Server:

#-*-coding:utf-8-*-

fromsocketimport*

fromtimeimportctime

fromtimeimportlocaltime

importtime

HOST=''

PORT=1122#设置侦听端口

BUFSIZ=1024

ADDR=(HOST,PORT)

sock=socket(AF_INET,SOCK_STREAM)

sock.bind(ADDR)

sock.listen(5)

#设置退出条件

STOP_CHAT=False

whilenotSTOP_CHAT:

print('等待接入,侦听端口:%d'%(PORT))

tcpClientSock,addr=sock.accept()

print('接受连接,客户端地址:',addr)

whileTrue:

try:

data=tcpClientSock.recv(BUFSIZ)

except:

#print(e)

tcpClientSock.close()

break

ifnotdata:

break

#python3使用bytes,所以要进行编码

#s='%s发送给我的信息是:[%s]%s'%(addr[0],ctime(),data.decode('utf8'))

#对日期进行一下格式化

ISOTIMEFORMAT='%Y-%m-%d%X'

stime=time.strftime(ISOTIMEFORMAT,localtime())

s='%s发送给我的信息是:%s'%(addr[0],data.decode('utf8'))

tcpClientSock.send(s.encode('utf8'))

print([stime],':',data.decode('utf8'))

#如果输入quit(忽略大小写),则程序退出

STOP_CHAT=(data.decode('utf8').upper()=="QUIT")

ifSTOP_CHAT:

break

tcpClientSock.close()

sock.close()

Client:

#-*-coding:utf-8-*-

fromsocketimport*

classTcpClient:

#测试,连接本机

HOST='127.0.0.1'

#设置侦听端口

PORT=1122

BUFSIZ=1024

ADDR=(HOST,PORT)

def__init__(self):

self.client=socket(AF_INET,SOCK_STREAM)

self.client.connect(self.ADDR)

whileTrue:

data=input('>')

ifnotdata:

break

#python3传递的是bytes,所以要编码

self.client.send(data.encode('utf8'))

print('发送信息到%s:%s'%(self.HOST,data))

ifdata.upper()=="QUIT":

break

data=self.client.recv(self.BUFSIZ)

ifnotdata:

break

print('从%s收到信息:%s'%(self.HOST,data.decode('utf8')))

if__name__=='__main__':

client=TcpClient()

以上就是关于python模块之socket实例的详细介绍,最后想要了解更多关于Python发展前景趋势,请关注扣丁学堂官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的Python培训视频教程系统,通过千锋扣丁学堂金牌讲师在线录制的第一套自适应Python在线视频课程系统,让你快速掌握Python从入门到精通开发实战技能。







【关注微信公众号获取更多的学习资料】



查看更多关于"Python开发资讯"的相关文章>>


标签: Python视频教程 Python基础教程 Python爬虫 Python培训 socket使用实例

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号