今日所学
# socket是一个接口,内部帮你封装了一堆协议 # 导入socket模块 import socket # 要找到这台电脑上的应用程序的端口和ip地址 # 作为服务器必须明确自己的ip和端口号,并且不能经常变化 # 参数1指定 socket类型AF_INET 表示网络类型即 ip 类型,ipv4,目前大多数的ip地址类型 # 参数2 指定的是传输协议 SOCK_STREAM 表示TCP协议 SOCK_DGRAM 表示UDP协议 server = socket.socket(socket.AF_INET6,socket.SOCK_STREAM) #买电话机 # 默认就是网络类型 TCP协议 # server = socket.socket() # 无论是服务器端还是客户端都用socket # 为服务器绑定ip 和端口号 ip一定是本机ip,本机可能会有多个ip,用自己真实的ip # 正常开发中,此时就是建立连接的那个电脑的ip 和端口 # 注意:需要参数是一个元组 端口就是普通整数 server.bind(("127.0.0.1", 1688)) #插入手机卡 # 开始监听1688这个端口 盯着这个端口看有没有数据过来 server.listen() #手机开始待机 # 接受链接请求 # 链接建立会返回给客户端两个参数 # 第一个表示客户端的socket 第二个客户端的地址信息 # accept 是一个阻塞函数,会一直等到有客户端连接过来,再继续执行 client, addr = server.accept() #接电话 print(type(client)) print(addr) # 收发数据 data = client.recv(1024) print(data) import socket # 买个电话 client = socket.socket() # 连接服务器 # 作为客户端 ip和端口可以变化 所有系统会自动分配随机端口给客户端 # connect本质是在进行三次握手,也是一个数据传输的过程,如果服务器没有立马响应 也会阻塞 client.connect(("127.0.0.1", 1688)) #三次握手, 连接服务器, # 开始通话 # 发送数据,因为是字符串,所以要把发送的内容需要转码成二进制 # 发数据要给服务器,send把数据交给操作系统,后续的发送应用程序无法控制,send一般不会卡 client.send("hello".encode("utf-8")) # 接收数据 data = client.recv(1024) print(data) # 结束 client.close() 、 import socket client = socket.socket() # connect本质是三次握手,也是一个数据传输的过程,如果服务器没有立马响应,也会阻塞 # 所以connect与会卡,但是不会卡太久 client.connect(("127.0.0.1", 6667)) # 连接服务器,三次握手,相互传数据 print("握手成功!,") # 收发数据,本质是把数据交给操作系统发送,一旦数据交给操作系统,以后的数据应用程序就无法控制,所以send不会卡,如果数据量很大就会阻塞 # client.send("hello".encode("utf-8")) # 发送数据 # print("发送完成") #操作系统把数据先丢进缓存中,recv读取数据是从操作系统缓存区读取数据, # 如果当前还没有任何数据,就会进入阻塞,会一直等到有数据到来,再继续执行 # try: # data = client.recv(1024) # 接受数据,给一个接受长度 # print("接受完成") # print(data) # except: client.close() # 结束,关机 print("服务器强行关闭") import socket server = socket.socket() server.bind(("127.0.0.1", 6667)) #确认自己的ip和端口 绑定地址 server.listen() #监听数据 #accept是一个阻塞函数,会一直继续等待客户端发送数据,直到有数据进入再继续运行 client, addr = server.accept() #链接 完成三次握手 print("握手成功") # 收发数据,注意都是用表示客户端的socket来收发数据 # client.send("word".encode("utf-8")) #发数据 data = client.recv(1024) print("客户端发来的数据",data) # client.close() #结束传输 四次挥手,断开连接 server.close() #结束,关机关闭服务器 print("服务器关机")转载于:https://www.cnblogs.com/Fzhiyuan/p/10940374.html
