python socket网络编程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python socket网络编程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2756字,纯文字阅读大概需要4分钟。
内容图文
![python socket网络编程](/upload/InfoBanner/zyjiaocheng/852/8895cdcf462b4425acdc54280c955560.jpg)
计算机通过网卡通信,一台计算机可以有多个网卡。
通信线路可传递各种类型的数据,遵循不同的通信协议。
socket:相当于通信双方的端口。
机器上最多开放的端口数:65535.
建立连接需要IP地址和端口号。
每个机器有IP地址,有端口号,通信时找到IP地址,再找到具体的端口号,因为机器上可以同时运行很多程序,所以需要同时开放很多端口。
发送端伪代码:
import socket socket.TCP/IP connect(server.ip,server.port) socket.send('hello,world') socket.recv() #发送端也可以接收服务器传来的数据 socket.close() #关闭端口
服务器端伪代码:
import socket socket.TCP/IP listen(0.0.0.0,1234) #0.0.0.0是IP地址,一个服务器可以有多个IP地址,每个IP地址下有多个端口,接收数据时需要指定IP地址和端口 #0.0.0.0是指所有IP地址,1234是端口号 socket.waiting() #等待数据传来 socket.recv() send() #服务器也可以发送数据
socket families(地址簇,网络层):
socket.AF_UNIX 进程通过内存通信,不经过硬盘
socket.AF_INET IPV4,网络层
socket.AF_INET6 IPV6
socket types(传输层):
socket.SOCK_STREAM #for tcp协议
socket.SOCK_DGRAM #for udp协议
socket.SOCK_RAW #原始套接字,处理底层、原始的数据ICMP\IGMP等网络报文;更改IP地址;
真代码:
服务器端:
import socket server=socket.socket() server.bind(('localhost',9696)) server.listen() print('开始等待') conn,addr=server.accept() #返回两个值,第一个是客户端连过来而在服务器端为其生成的一个连接实例,第二个是地址 print(conn,addr) print('电话来了') data=conn.recv(1024) print('receive:', data) conn.send(data.upper()) server.close()
客户端:
import socket client=socket.socket() #声明socket类型,同时生成socket连接对象 client.connect(('localhost',9696)) # client.send(b"hello,world.") #只能以字节的格式发送,b代表byte,b只能转换ACS码,不能转换中文
client.send("胖虎就是刚田武".encode('utf-8')) #中文转换为bytes data=client.recv(1024) print('recv:',data.decode()) #把bytes转换为utf-8 client.close()
多次传输信息:
服务器端:
import socket server=socket.socket() server.bind(('localhost',9696)) server.listen() print('开始等待') conn,addr=server.accept() #返回两个值,第一个是客户端连过来而在服务器端为其生成的一个连接实例,第二个是地址 print('电话来了') while True: data=conn.recv(1024) print(type(data)) #data是bytes类型 print(type(data.decode())) #data.decode()是str类型 print('receive:',data.decode()) #收到的是bytes,需要decode()解码成string conn.send(data.upper()) server.close()
客户端:
import socket client=socket.socket() #声明socket类型,同时生成socket连接对象 client.connect(('localhost',9696)) # client.send(b"hello,world.") #只能以字节的格式发送,b代表byte,b只能转换ACS码,不能转换中文 # client.send("胖虎就是刚田武".encode('utf-8')) #中文转换为bytes while True: massage=input('输入要发送的内容:').strip() client.send(massage.encode('utf-8')) data=client.recv(1024) print('receive:',data.decode()) client.close()
内容总结
以上是互联网集市为您收集整理的python socket网络编程全部内容,希望文章能够帮你解决python socket网络编程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。