socket()模块函数用法
import socket socket.socket(socket_family,socket_type,protocal=0) socket_family 能够是 AF_UNIX 或 AF_INET。socket_type 能够是 SOCK_STREAM 或 SOCK_DGRAM。protocol 通常不填,默认值为 0。 获取tcp/ip套接字 tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 获取udp/ip套接字 udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 因为 socket 模块中有太多的属性。咱们在这里破例使用了'from module import *'语句。使用 'from socket import *',咱们就把 socket 模块里的全部属性都带到咱们的命名空间里了,这样能 大幅减短咱们的代码。 例如tcpSock = socket(AF_INET, SOCK_STREAM)
服务端:socket
import socket #一、买手机 phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #tcp称为流式协议,udp称为数据报协议SOCK_DGRAM # print(phone) #二、插入/绑定手机卡 # phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) phone.bind(('127.0.0.1',8082)) #三、开机 phone.listen(5) # 半链接池,限制的是请求数 #四、等待电话链接 print('start....') conn,client_addr=phone.accept() #(三次握手创建的双向链接,(客户端的ip,端口)) # print(conn) print(client_addr) #五、通讯:收\发消息 while True: # 通讯循环 data=conn.recv(1024) #最大接收的字节数 print('来自客户端的数据',data) conn.send(data.upper()) #六、挂掉电话链接 conn.close() #七、关机 phone.close()
客户端:tcp
import socket #一、买手机 phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) print(phone) #二、拨电话 phone.connect(('127.0.0.1',8082)) # 指定服务端ip和端口 #三、通讯:发\收消息 while True: msg=input('>>>:').strip() phone.send(msg.encode('utf-8')) # phone.send(bytes('hello',encoding='utf-8')) data=phone.recv(1024) print(data) #四、关闭 phone.close()