python socket基本流程
1.基于TCP的流程图

2.基于TCP的通信流程
服务端:
#!/usr/bin/env python # --*-- encoding:utf-8 --*-- import socket #创建套接字 sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #绑定IP端口,参数为元组 sock.bind(('127.0.0.1',9000,)) #设置最大连接数,并监听 sock.listen(10) while True: # 等待客户端的连接 ,阻塞在这里 conn, addr = sock.accept() conn.sendall(bytes('你已经连接上机器人',encoding='utf-8')) print(conn,addr) while True: res =conn.recv(1024) res = str(res,encoding='utf-8') if res== 'q': break else: conn.sendall(bytes(res+',SB',encoding='utf-8')) #关闭连接 sock.close()
客服端:
#!/usr/bin/env python # --*-- encoding:utf-8 --*-- import socket #创建套接字 sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #建立连接 sock.connect(('127.0.0.1',9000)) #recv也是阻塞的 res = sock.recv(1024) print(str(res,encoding='utf-8')) while True: res = input('请输入要发送的内容,q退出') if res == 'q': sock.sendall(bytes(res,encoding='utf-8')) break else: sock.sendall(bytes(res, encoding='utf-8')) res = sock.recv(1024) print(str(res, encoding='utf-8')) #关闭连接 sock.close()
3.基于UDP的通信
服务端:
#!/usr/bin/env python # --*-- encoding:utf-8 --*-- import socket #创建套接字 sscok = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #绑定端口 sscok.bind(('127.0.0.1',9999)) print('服务端已开启') while True: #阻塞,等待客户端的消息 data,addr =sscok.recvfrom(1024) #有两个返回值,一个消息内容 ,一个地址 print('收到%s的信息:%s'% (addr,str(data,encoding='utf-8'))) sscok.sendto(bytes('广播消息:XXX中了500万',encoding='utf-8'),addr) #指定地址,发送消息 #关闭连接 sscok.close()
客服端:
#!/usr/bin/env python # --*-- encoding:utf-8 --*-- import socket #创建套接字 cscok = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) while True: data = input('请输入要发送的内容') #向指定的服务端发送消息 cscok.sendto(bytes(data,encoding='utf-8'),('127.0.0.1',9999,)) #接收来自服务端的消息 data,addr = cscok.recvfrom(1024) print('收到来自%s的消息:%s'%(addr,str(data,encoding='utf-8'))) #关闭连接 cscok.close()

浙公网安备 33010602011771号