recv

d28 scoket套接字 struct模块

泪湿孤枕 提交于 2019-11-26 10:46:10
scoket套接字 Socket是应用层与 TCP/IP协议族通信的中间软件抽象层,它是一组接口 服务器端先初始化 Socket,然后与端口绑定 (bind),对端口进行监听 (listen),调用 accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个 Socket,然后连接服务器 (connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束 scoket模块 import socket # 生成对象 server = socket.socket() # 绑定ip和端口 server.bind(('127.0.0.1',8080)) #绑定参数为一个元组 #127.0.0.1这叫回送地址 表示电脑本身 端口 为普通整数 一般为8000以上 # 监听 半连接池 server.listen(5) # 接收链接请求 # 第一个是表示客户端的socket 第二个客户端的地址信息 conn,addr = server.accept() #接收字节 data = conn.recv(1024) print(data) # 发送数据 conn.send(b'hello world') # 关闭 conn.close() # 关机 server.close()

day28 8_7 网络编程之tcp协议

我怕爱的太早我们不能终老 提交于 2019-11-26 10:29:06
一。socket模块   socket模块就是用来网络搭建的模块,socket也叫套接字。   创建网络连接,需要使用两个模块进行模拟,一个作为server服务器端,一个作为client客户端。   在服务器端,需要先申明一个socket,再使用bind等待接入,需要传入IP地址和端口号, 这里注意,这两个需要放在一个元组里。    再调用server.listen输入接入的连接池大小,也就是最大可以接受多少客户端的等待。   服务器端: import socket server = socket.socket()   server.bind(('127.0.0.1',9000)) #127.0.0.1是本机回还地址 server.listen(5) #连接池 conn,addr = server.accept() print(conn) res = conn.recv(1024) print(res) conn.send(b'hello client') conn.close() server.close()   客户端 import socket client = socket.socket() client.connect(('127.0.0.1',9000)) client.send(b'hello') res = client.recv(1024) print(res )

网络编程

て烟熏妆下的殇ゞ 提交于 2019-11-26 10:23:15
1.C/S B/S架构 C: client端,客户端 B: Browser,浏览器 S: server 服务端 C/S 客户端与服务器之间的架构: QQ,微信,游戏,App的都属于C/S架构. ​ 优点: 安全性高,个性化设置,功能全面.响应速度快. ​ 缺点: 开发成本高,维护成本高.(基于App),面向的客户固定. B/S 浏览器与服务器之间的架构:它属于C/S架构,最近几年比较流行的特殊的C/S架构. ​ 优点: 开发维护成本低,,面向用户广泛. ​ 缺点: 安全性相对低,响应速度相对慢,个性化的设置单一. 2.互联网通信的原理 打电话示例: 穿越时空: 80年代初期,固定电话,座机. 一堆物理连接介质将两个部电话连接起来. 拨号. 交流. 那时候没有普通话,河南,山西,广西,广东,福建等等..... 推广了普通话. 与国外一些国家去交流,统一英语. 互联网通信: 一堆物理连接介质将两个部电话连接起来. 拨号. 统一的通信标准. 一揽子协议, 这些互联网协议: 就是一个一个标准,最终就可以通信. 3.osi 七层协议(五层协议) 1.物理层: 一系列的物理连接介质: 网线,光纤,电缆等等等. 发送的数据就是010101010110比特数据流,这些数据连续不断地收发,010110,拿到010101没有用,你不知道数据代表的意义, 数据要进行分组(按照一定规则),

套接字,粘包问题解决

感情迁移 提交于 2019-11-26 10:18:32
socket(套接字) 本地回环地址 127.0.0.1 我们先来写一个简单地服务器和客户端 服务端 import socket ​ server = socket.socket() # 就比如买了一个手机 server.bind(("127.0.0.1",8080)) # bind中绑定的是IP地址和端口号,注意是一个元组,就比如,将手机卡,插入了手机 server.listen(5) # 半连接池,最大等待连接数为5个,就比如开机 conn,address = server.accept() # 接听电话等着别人给你打电话 ​ date = conn.recv(1024) # 听别人说话,接收1023个字节数 print(date) conn.send(b"hello") # 给别人回话 ​ ​ conn.close() # 挂断电话 server.close() # 关机 客户端 import socket ​ client = socket.socket() #拿电话 client.connect(("127.0.0.1",8080)) #绑定的是IP地址和端口号,也是一个元组 拨号 ​ client.send(b"hello") # 对别人发消息 ​ date = client.recv(1024) #接收别人说话,没次接收1024个字节 print(date) ​

网络编程-套接字(socket)

情到浓时终转凉″ 提交于 2019-11-26 10:18:07
一、Socket(套接字) ★注意点: ① 127.0.0.1本机地址回环:只能识别自己,其他人无法访问 ② send与recv对应,不要出现两边是相同的情况,recv是跟内存要数据,无需考虑 ③ tcp特点是会将数据量比较小的并且时间间隔比较短的数据,一次性打包发送给对方 1 import socket 2 3 server = socket.socket() # 买手机 不传参数默认用的就是TCP协议 4 server.bind(('127.0.0.1',8080)) # bind((host,port)) 插电话卡 绑定ip和端口 5 server.listen(5) # 开机 半连接池 6 7 conn, addr = server.accept() # 接听电话 等着别人给你打电话 8 data = conn.recv(1024) # 听别人说话 接收1024个字节数据 9 conn.send(b'hello baby~') # 给别人回话 10 11 conn.close() # 挂电话 12 server.close() # 关机 Server端代码 1 import socket 2 3 client = socket.socket() # 拿电话 4 client.connect(('127.0.0.1',8080)) # 拨号 写的是对方的ip和port 5 6

网络编程(二)

大城市里の小女人 提交于 2019-11-26 10:15:36
网络编程(二) >>>思维导图>>>中二青年 基于TCP协议的Socket套接字 server端 import socket sk = socket.socket() sk.bind(('127.0.0.1',8898)) # 把地址绑定到套接字 sk.listen() # 监听链接 conn,addr = sk.accept() # 接受客户端链接 ret = conn.recv(1024) # 接收客户端信息 print(ret) # 打印客户端信息 conn.send(b'hi') # 向客户端发送信息 conn.close() # 关闭客户端套接字 sk.close() # 关闭服务器套接字(可选) client端 import socket sk = socket.socket() # 创建客户套接字 sk.connect(('127.0.0.1',8898)) # 尝试连接服务器 sk.send(b'hello!') ret = sk.recv(1024) # 对话(发送/接收) print(ret) sk.close() # 关闭客户套接字 127.0.0.1本机回还地址:只能自己识别自己 其他人无法访问 send与recv对应,不要出现两边都是相同的情况 recv是跟内存要数据,至于数据的来源 你无需考虑 TCP特点

Python socket 粘包问题 报头

折月煮酒 提交于 2019-11-26 10:14:00
一 socket(套接字) 1.什么是socket:Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。它把复杂的TCP/IP协议族隐藏在Socket接口后面,了socket以后,无需自己编写代码实现三次握手,四次挥手,ARP请求,打包数据等等,socket已经封装好了,只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。 2.基本语法: #客户端: #1.创建socket对象 client = socket.socket() #2.链接服务器 client.connect((ip,port)) #3.收发数据 通常需要循环 #send 发 只能发二进制数据 client.send(字节数据) #recv 收 收多少字节数 data = client.recv(字节大小) #4.断开链接 client.close() # 服务端 #1.创建socket对象 server = socket.socket() #2.绑定一个固定的ip和端口 server.bind((ip,port)) #ip必须是本机ip 端口8000以后的,不要使用常见的端口 web:80 / 8080 mysql 3306 ssh:22 ftp:21 #3.开始监听客户端的到来 server.listen(数字) #4.接收客户端的链接请求 conn,addr

网络编程(粘包问题)

我怕爱的太早我们不能终老 提交于 2019-11-26 09:08:23
一.socket 理解socket:   Socket是应用层与 TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中, Socket其实就是一个门面模式,它把复杂的 TCP/IP协议族隐藏在 Socket接口后面,对用户来说,一组简单的接口就是全部,让 Socket去组织数据,以符合指定的协议。 其实站在你的角度上看,socket就是一个模块。我们通过调用模块中已经实现的方法建立两个进程之间的连接和通信。 也有人将socket说成ip+port,因为ip是用来标识互联网中的一台主机的位置,而port是用来标识这台机器上的一个应用程序。 所以我们只要确立了ip和port就能找到一个应用程序,并且使用socket模块来与之通信。 二.套接字的初使用 2.1基于TCP协议的socket   tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 套接字初次使用: #客户端 import socket client = socket.socket() # 买了个电话 client.connect(('127.0.0.1', 8080)) # 插上电话卡 (地址是以元组的形式书写的,前一个是IP后面是端口) client.send(b'hello') # 对别人说话 res = client.recv(1024) # 听别人说话 print(res) client

python day28

守給你的承諾、 提交于 2019-11-26 08:25:29
昨日内容回顾 网络编程: 使计算机之间基于网络实现数据交互 交换机: 只要是接入了交换机的计算机 彼此之间都是互联的 局域网: 互联网其实都是由N多个局域网连接而成 基于以太网协议通信的特点 通信基本靠吼 广播 单播 arp协议: 根据IP地址获取mac地址 OSI协议:(补充) 路由器: 连接局域网 域名解析: www.baidu.com >>> 14.215.177.39:80 应用层 HTTP协议:超文本传输协议 FTP协议 UDP协议 数据报协议 无需建立双向通道 数据传输是不安全的 将内存中的数据直接发送出去 不会做保留 例如早期的qq TCP协议类似于 打电话 UDP协议类似于 发短信 今日内容 socket套接字 解决端口占用问题 from socket import SOL_SOCKET,SO_REUSEADDR sk.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #就是它,在bind前加 服务端 import socket ​ # 买手机 server = socket.socket() # 不传参数时,默认用的就是TCP协议 # 插电话卡 bind((host,port)) 绑定ip和port server.bind(('127.0.0.1',8080)) # 开机 半连接池 server.listen(5) # 接听电话

Python socket receive - incoming packets always have a different size

冷暖自知 提交于 2019-11-26 07:59:09
问题 I\'m using the SocketServer module for a TCP server. I\'m experiencing some issue here with the recv() function, because the incoming packets always have a different size, so if I specify recv(1024) (I tried with a bigger value, and smaller), it gets stuck after 2 or 3 requests because the packet length will be smaller (I think), and then the server gets stuck until a timeout. class Test(SocketServer.BaseRequestHandler): def handle(self): print \"From:\", self.client_address while True: data