以打电话举例:
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()