python网络编程socket编程_Python网络编程之Socket的简单实现

一、引入

关于Python的网络编程,最基础莫过于socket了。

socket,又称“套接字”,网络上的两个程序如果想要实现双向的数据通信,需要建立连接,这个连接的一端就称为一个socket。

python中有一个模块socket,在这个模块中可以找到socket()函数,该函数用于创建套接字对象。根据所用协议的不同(TCP/IP和UDP/IP),可以创建两类socket。下面贴上一个TCP/IP类的socket实例。

二、创建TCP服务器

1 __author__ = "JentZhang"

2

3 from socket import *

4 fromtime import ctime5

6 HOST = '127.0.0.1'#服务器地址7 PORT = 21136#服务器端口8 BUFIZE = 1024#接受数据的大小9 ADDR =(HOST, PORT) #创建socket时用到的地址(就是将服务器地址和端口写成一个元组的形式)10

11 tcpSerSock =socket(AF_INET, SOCK_STREAM) #创建socket连接(AF_INET表示IPV4,SOCK_STREMAM表示TCP协议 )12 tcpSerSock.bind(ADDR) #绑定地址13 tcpSerSock.listen(5) #开始监听端口,参数5表示可以接收的连接数量14

15 whileTrue: #循环接受多个客户端发来的请求16 try:17 print('Watting for connection...')18 tcpCliSock, addr =tcpSerSock.accept() #当有客户端发来请求时,通过accept()方法来接受,返回参数有两个,可以自行print出来,看看是什么19 print('...connected from :', addr)20

21 whileTrue: #循环接受客户端发来的消息22 data =tcpCliSock.recv(BUFIZE) #接受客户端发来的消息,接收到的是一个byte类型的数据23 ifnot data: #当用户发送空字符串的是时候,跳出循环,重新接收数据24 break

25 print('接收到数据:', data)26 tcpCliSock.send(b'[%s] % s' %(ctime().encode(), data)) #将接收到的数据加上时间戳返回回去,同样返回的数据需要是byte类型27 except ConnectionResetError ase: #当客户端关闭连接时,catch这个错误做出相应的提示28 print(e)29 print('%s:%s 退出了' % (addr[0], addr[1])) #服务端也关闭相关的socket连接30 finally:31 tcpCliSock.close()32 tcpSerSock.close()

三、创建客户端

1 __author__ = "JentZhang"

2

3 from socket import *

4

5 HOST = '127.0.0.1'

6 PORT = 21136

7 BUFSIZE = 1024

8 ADDR =(HOST, PORT)9

10 tcpCliSock =socket()11 tcpCliSock.connect(ADDR) #建立连接12

13 whileTrue:14 msg = input('>>') #输入要发送的内容15 ifnot msg: #如果发送内容为空,则重新发送16 break

17 tcpCliSock.send(msg.encode()) #发送byte类型的数据18

19 data =tcpCliSock.recv(BUFSIZE) #接受服务端的返回20 ifnot data: #如果服务端返回为空,则重新发送21 break

22

23 print(data.decode())24 tcpCliSock.close()

四、效果预览

1.分别启动服务端和客户端,注意先启动服务端。

2.发送数据

3.断开连接

五、总结概括

简单的做了一个socket的实例(由于socket的阻塞模式,本实例同一时间只能一个客户端连到服务器,只有当当前连接的客户端断开了连接,其他客户端才能连进来)。

关于socket编程,还有更丰富的东西在里面。本例仅供参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值