1 创建TCP服务器
import socket
if __name__ == '__main__':
print('~~主线程开始~~')
host = "127.0.0.1"
port = 8080
web=socket.socket()
web.bind((host,port))
web.listen(5)
print("服务器等待客户链接")
while True:
conn,addr=web.accept() #如果建立客户端链接,进行下一步,如果未建立链接,在此行代码等待
data=conn.recv(1024) #获取客户端请求数据
print(data)
conn.sendall(b'HTTP/1.1 200 OK\r\n\r\nHello Word') #向客户端发送数据
print("链接成功")
conn.close()
print('~~主线程结束~~')
运行结果:
~~主线程开始~~
服务器等待客户链接
b'GET / HTTP/1.1\r\nHost: 127.0.0.1:8080\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n'
链接成功
b'GET /favicon.ico HTTP/1.1\r\nHost: 127.0.0.1:8080\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nReferer: http://127.0.0.1:8080/\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n'
链接成功
b''
链接成功
2 创建TCP客户端
和上例中的服务器配合可以实现。
import socket
if __name__ == '__main__':
s=socket.socket()
host="127.0.0.1"
port=8080
s.connect((host,port))
send_data=input("请输入要发送的数据:")
s.send(send_data.encode())
#接收数据最大接收1024个字节
receData=s.recv(1024).decode()
print("收到的数据为:%s"%receData)
s.close()
和上例中的服务器配合可以实现。输入发送数据,可以得到如下结果:
客户端:
请输入要发送的数据:hello boy
收到的数据为:HTTP/1.1 200 OK
Hello Word
Process finished with exit code 0
服务器:
~~主线程开始~~
服务器等待客户链接
b'hello boy'
链接成功
3 创建UDP服务器
import socket
if __name__ == '__main__':
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #创建UDP套字段
s.bind(("127.0.0.1",8888))
print("绑定UDP到8888客户端")
data,addr=s.recvfrom(1024)
data=float(data)*1.8+32
sentd_data="转换后的温度:"+str(data)
print("received from %s:%s"%addr)
s.sendto(sentd_data.encode(),addr) #发送给客户端
s.close()
4 创建UDP客户端
import socket
if __name__ == '__main__':
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #创建UDP套字段
data = input("请输入需要转换的温度")
s.sendto(data.encode(), ('127.0.0.1',8888))
print(s.recv(1024).decode())
s.close()
客户端执行结果
请输入需要转换的温度 20
转换后的温度:68.0