推荐书: Python开发最佳实践

Python教程:[14]快速创建TCP服务器

分享时@该用户已经被封, 我就能回答你的问题奥!

这里我不跟大家讲什么是TCP,什么是服务器,相信大家都懂,不懂的话我也没有能力让你懂,所以我就直接上代码了,在代码中解释,然后把所有的代码呈现出现,以后你只要在这个简单的代码上进行修改就可以了。

  • 首先我们引入socket的所有属性,引入时间戳函数ctime,后面要用到时间戳
  • 设置主机地址,主机地址为空说明我们可以使用任意可以使用的地址;端口号是我随意写的,只要不超过一定的范围就可以了,你可以搜索一下端口号的范围;ADDR连接地址包括主机地址和端口号。
  • 我们使用socket方法来创建一个套接字;使用bind方法绑定到地址上;使用listen设定最多可以连接5个客户端。
  • 下面是最重要的部分,我们使用无限循环来保证随时接受链接请求,accept方法可以接受请求,并返回客户端tcpclisock和客户端地址。使用recv方法来接受数据,send方法发送数据。如果一开始接受到了数据,后来数据为空,则跳出循环。
  • 下面是所有的代码:

  • from socket import * #引入socket的所有

  • from time import ctime #时间戳函数,用于实现服务器的功能

  • HOST=’’ #主机地址

  • PORT=23345 #端口号

  • BUFSIZ=2048 #缓存区大小,单位是字节,这里设定了2K的缓冲区

  • ADDR=(HOST,PORT) #链接地址

  • tcpSerSock=socket(AF_INET,SOCK_STREAM) #创建一个TCP套接字

  • tcpSerSock.bind(ADDR) #绑定地址

  • tcpSerSock.listen(5) #最大连接数为5

  • while True: #无限循环

  • print(‘客户端连接。。。’) #显示文字信息

  • tcpCliSock,addr=tcpSerSock.accept() #等待接受连接

  • print( ‘链接成功,客户端地址为:’,addr)

  • while True:

  • data=tcpCliSock.recv(BUFSIZ) #接收数据,BUFSIZ是缓存区大小

  • if not data: #如果data为空

  • break #则跳出循环

  • tcpCliSock.send(‘[%s] %s’% (ctime(),data))

  • tcpCliSock.close()   #关闭连接
    
  • tcpSerSock.close() #关闭服务器

转载请注明来自DataScience.

邮箱: 675495787@qq.com