11 python socket网络编程

 1 #客户端和服务端:
 2 大多数连接都是可靠的TCP连接。创建TCP连接时,
 3 主动发起连接的叫客户端,
 4 被动响应连接的叫服务器。
 5
 6 ##关于端口
 7 端口号小于1024的是Internet标准服务的端口,例如SMTP服务是25端口,FTP服务是21端口,等等
 8 端口号大于1024的,可以任意使用。
 9 客户端要主动发起TCP连接,必须知道服务器的IP地址和端口号。
10 作为服务器,提供什么样的服务,端口号就必须固定下来。
11
12 ##关于发送数据怎么协调
13 TCP连接创建的是双向通道,双方都可以同时给对方发数据。
14 但是谁先发谁后发,怎么协调,要根据具体的协议来决定。
15 例如,HTTP协议规定客户端必须先发请求给服务器,服务器收到后才发数据给客户端。
16
17 ---------------------客户端----------------------------------
18
19 # 导入socket库:
20 import socket
21
22 # 创建一个socket:
23 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    ##AF_INET指定使用IPv4协议,如果要用更先进的IPv6,就指定为AF_INET6。SOCK_STREAM指定使用面向流的TCP协议
24 # 建立连接:
25 s.connect((‘www.sina.com.cn‘, 80))   ##注意参数是一个tuple,包含地址和端口号。
26 # 发送数据:
27 s.send(b‘GET / HTTP/1.1\r\nHost: www.sina.com.cn\r\nConnection: close\r\n\r\n‘)  ##建立TCP连接后,我们就可以向新浪服务器发送请求,要求返回首页的内容:
28
29
30 # 接收数据:
31 buffer = []
32 while True:
33     # 每次最多接收1k字节:
34     d = s.recv(1024)
35     if d:
36         buffer.append(d)
37     else:
38         break
39 data = b‘‘.join(buffer)    ##接收数据时,调用recv(max)方法,一次最多接收指定的字节数,因此,在一个while循环中反复接收,直到recv()返回空数据,表示接收完毕,退出循环。
40
41
42 # 关闭连接:
43 s.close()   ##当我们接收完数据后,调用close()方法关闭Socket,这样,一次完整的网络通信就结束了
44
45
46 #接收到的数据包括HTTP头和网页本身,我们只需要把HTTP头和网页分离一下,把HTTP头打印出来,网页内容保存到文件
47 header, html = data.split(b‘\r\n\r\n‘, 1)
48 print(header.decode(‘utf-8‘))
49 # 把接收的数据写入文件:
50 with open(‘sina.html‘, ‘wb‘) as f:
51     f.write(html)
52
53 ##最后,现在,只需要在浏览器中打开这个sina.html文件,就可以看到新浪的首页了。
54
55 -------------------------服务端----------------------------------------

原文地址:https://www.cnblogs.com/2mei/p/9254234.html

时间: 2024-11-06 19:16:45

11 python socket网络编程的相关文章

Python Socket 网络编程

Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ 聊天.收发 email 等等.要解决网络上两台主机之间的进程通信问题,首先要唯一标识该进程,在 TCP/IP 网络协议中,就是通过 (IP地址,协议,端口号) 三元组来标识进程的,解决了进程标识问题,就有了通信的基础了. 本文主要介绍使用 Python 进行 TCP Socket 网络编程,假设你已

python,socket网络编程,最简单的server端和client端代码

python网络编程三要素:网络地址,端口号,协议 知识点:conn代表的是客户端的socket对象. 下面的server.py和client.py小程序,实现了最简单的socket通信功能. #server.py import socket sk = socket.socket() address = ('127.0.0.1',8080) sk.bind(address) sk.listen(3) print('waitting......') conn,addr = sk.accept()

python Socket网络编程 基础

内容概要 Socket介绍 Socket参数介绍 基本Socket实例 Socket实现多连接处理 通过Socket实现简单SSH 通过Socket实现文件传送 1. Socket介绍 Socket Families(地址簇) socket.AF_UNIX unix本机进程间通信  socket.AF_INET IPV4 socket.AF_INET6  IPV6 Socket Types socket.SOCK_STREAM  #for tcp socket.SOCK_DGRAM   #for

Python socket网络编程1

1 服务器 客户端架构 C/S架构 server端要求: 1.力求一直提供服务 2. 绑定一个地址,客户能够一直找到 2 OSI七层 数据链路层是 以太网协议 IP是通过子网查找 ARP协议 Mac地址 TCP/UDP 是传输层 找对应的端口 3 SOCKET层 socket是把TCP/协议隐藏在Scocket后面 4 socket工作流程 先从服务器端说起.服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接.在这时如果

初学Python——Socket网络编程

认识socket socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实现数据的互相传递.我们知道网络 通信 都 是基于 ip+port(端口) 方能定位到目标的具体机器上的具体服务,操作系统有0-65535个端口,每个端口都可以独立对外提供服务,如果 把一个公司比做一台电脑 ,那公司的总机号码就相当于ip地址, 每个员工的分机号就相当于端口, 你想找公司某个人,必须 先打电话到总机,然后再转分机 . 建立一个socket必须至少有2端, 一个服务端,一个客户端,

day7 socket网络编程

Python Socket网络编程 Socket是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于Socket来完成通信的,例如我们每天浏览网页.QQ聊天.收发emali等等.要解决网络上两台主机之间的进程通信问题,首先要唯一标识该进程,在TCP/IP网络协议中,就是通过(IP地址,协议,端口号)三元组来识别进程的,解决了进程标识问题,就有了通信的基础了. 本文主要介绍使用Python进行TCP Socket网络编程,

Python面向对象进阶和socket网络编程-day08

写在前面 上课第八天,打卡: 为什么坚持?想一想当初: 一.面向对象进阶 - 1.反射补充 - 通过字符串去操作一个对象的属性,称之为反射: - 示例1: class Chinese: def __init__(self,name): self.name=name p = Chinese('standby') # 实例化一个对象 print(p) # 打印这个对象 --- <__main__.Chinese object at 0x0000000000B3A978> - 示例2: >&g

Python全栈【Socket网络编程】

Python全栈[socket网络编程] 本章内容: Socket IO多路复用(select) SocketServer 模块(ThreadingTCPServer源码剖析) Socket socket通常也称作"套接字" 用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Unix,而Unix/Linux基本哲学之一就是"一切皆文件",对于文件用[打开][读写][关闭]模式

python进阶之Socket 网络编程

 一:网络编程介绍   自从互联网诞生以来,现在基本上所有的程序都是网络程序,很少有单机版的程序了. 计算机网络就是把各个计算机连接到一起,让网络中的计算机可以互相通信.网络编程就是如何在程序中实现两台计算机的通信. 举个例子,当你使用浏览器访问新浪网时,你的计算机就和新浪的某台服务器通过互联网连接起来了,然后,新浪的服务器把网页内容作为数据通过互联网传输到你的电脑上. 由于你的电脑上可能不止浏览器,还有QQ.Skype.Dropbox.邮件客户端等,不同的程序连接的别的计算机也会不同,所以,更