本文共 2083 字,大约阅读时间需要 6 分钟。
学习Python爬虫过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。
引入socket库。
import socket
设置socket,主机和端口,并将主机名和端口绑定在一起,同时开启侦听。
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)host = socket.gethostname()port = 1234s.connect((host, port))s.listen(5)
设置一个循环,确保可以接受多个申请。
while True: connection, address = s.accept() print ('Got connection from', address)
可以设置Socket超时时间。
connection.settimeout(5)
设置接受数据,并规定接受数据的长度,防止接收包过大。
buf = connection.recv(1024)
转换类型,由于Python 3 的新规定,发送的必须是bytes类型,所以我们需要把str类型转换为bytes。
str1 ='Thank you for connecting' str1 = str1.encode() str2 ='Go away!' str2 = str2.encode() str3 ='1' str3 = str3.encode()
继续循环,进行判断,依据接收数据判断返回数据。
if buf == str3: connection.send(str1) else: connection.send(str2) connection.close()s.close()
引入socket库和time库。
import socketimport time
设置socket,主机和端口,并将主机名和端口绑定在一起确定发送目标。
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)host = socket.gethostname()port = 1234s.connect((host, port))
转换类型,由于Python 3 的新规定,发送的必须是bytes类型,所以我们需要把str类型转换为bytes。
str01 = '1'str01 = str01.encode()
设置发送睡眠间隔时间
time.sleep(1)
发送数据,并将接收的数据打印出来。
s.send(str01)print (s.recv(1024))s.close()
效果演示:
#coding:utf-8import sockets = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)host = socket.gethostname()port = 1234s.bind((host, port))while True: recv,client_addr = s.recvfrom(1024) if not recv: break print('[Client %s:%s said]:%s' % (client_addr[0],client_addr[1],recv)) str1 ='tcpServer has received your message' str1 = str1.encode() s.sendto(str1,client_addr)
大部分和基于TCP的一样,但是要注意,UDP不需要三次握手,所以不需要listen和accept,也要注意发送数据的类型是bytes。
import socketimport times = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)host = socket.gethostname()port = 1234s.connect((host, port))str01 = '1'str01 = str01.encode()time.sleep(1)s.send(str01)print (s.recv(1024))s.close()
效果演示:
转载地址:http://abazi.baihongyu.com/