基于tcp协议通信的套接字

以打电话举例:

import socket

#1.买手机
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#SOCK_STEAM=>TCP流式协议,

#2.拨号
phone.connect(('127.0.0.1',8080))

#3.发\收消息
phone.send('hello'.encode('utf-8')) # 只能发bytes类型
data=phone.recv(1024)
print('收到服务端的消息: ',data)

#4.挂电话链接
phone.close()
客户端
import socket

#1.买手机
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #SOCK_STEAM=>TCP流式协议,
print(phone) #是用来接收链接请求,从而建立链接的
# 结果:<socket.socket fd=268, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0>
#2.插手机卡
phone.bind(('127.0.0.1',8080)) #0-65535

#3.开机
phone.listen(5) # 同一时刻最大请求数为5个

print('start....')
#4.等待电话请求
conn,client_addr=phone.accept() #(双向链接的套接字对象,存放客户端ip和端口的小元组)
print(conn) # conn代表双向链接,用来收发消息
#结果:<socket.socket fd=304, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8080), raddr=('127.0.0.1', 3482)>
print(client_addr)
# 结果:('127.0.0.1', 3482)

#5.收\发消息
data=conn.recv(1024) #1024接收的最大字节数bytes
print('收到客户的数据',data)
conn.send(data.upper())

#6.挂电话链接
conn.close()

#7.关机
phone.close()
服务端

猜你喜欢

转载自www.cnblogs.com/zhouhao123/p/11267594.html