python网络套接字_python网络编程:socket套接字

本文目录:

一、socket

socket是什么?

学习网络编程 其实就是在学socket

翻译过来称为套接字,是对底层的 TCP IP UDP 等网络协议进行封装,使得上层的应用程序开发者,不用直接接触这对复杂,丑陋的协议,在程序员的言论,他就是一个封装好的模块!

要完成网络通讯,只需要使用系统提供的socket模块就行,TCP和UDP是传输层最常见的协议

TCP和UDP的优缺点

主要控制传输数据的方式

TCP的传输方式

优点:通过三次握手来与服务器建立连接

可以保证数据的完整性

a机器给b机器发送数据包 要求b机器必须立即返回一个确认包

a机器会等待一段时间,如果超时还没有收到确认,则重发数据

缺点:传输效率低

使用场景: 文字聊天,支付宝转账等,

UDP

传输方式:不需要建立连接,直接发送

缺点: 不能保证数据的完整性

优点:传输效率比TCP高

使用场景:视频通话,语音通话,UDP

"""python中的socket

在使用socket的时候用户需要关心的是 ip地址,port端口, 传输协议TCP/UDP,你要发送的数据data

在写网络编程的时候,必然是有两台代码,对应着客户端和服务器

使用socket来完成TCP通讯

应该先完成服务器的代码编写"""

二、TCP服务器

importsocket#1.创建一个代表服务器的socket对象

s =socket.socket()#2.绑定端口号和IP地址#127.0.0.1 表示当前这个电脑的ip

address = ("127.0.0.1",8080)

s.bind(address)print("服务器已启动!")#3.开始监听这个端口#5表示 可以有5个处于半连接状态的连接 指的不是最大连接数

s.listen(5)print("test")#4.接受连接请求#该函数是阻塞的 会卡主程序的执行,必须等到有一个客户端进来才会继续执行#返回元组 第一个是代表客户端的socket对象 第二客户端的地址信息

client,c_address =s.accept()print("有一个连接已建立!")print(c_address)#给客户端发送数据

#5.读写数据#接受数据

res = client.recv(1024)print(res)#6.关闭连接#s.close()

三、TCP客户端

importsocket#1.创建客户端的socket对象

c =socket.socket()#2.指定服务器的ip和port

server_address = ("127.0.0.1",8080)#3.建立连接

c.connect(server_address)#4.读写数据#发送数据到服务器

c.send("hello 我是客户端!".encode("utf-8"))#5.关闭连接

c.close()

四、UDP服务器

importsocket#1.创建socket对象

s = socket.socket(type=socket.SOCK_DGRAM)#2.绑定端口和ip

s.bind(("127.0.0.1",10000))whileTrue:#3.接受数据

res = s.recv(1024)print(res)whileTrue:

msg= input(">>>:")#需要获取对方的ip和端口

#s.sendto(msg.encode("utf-8"), ("127.0.0.1", 10000))

#关闭资源

s.close()

五、UDP客户端

importsocket#1.创建socket对象

s = socket.socket(type=socket.SOCK_DGRAM)#2.绑定端口和ip

s.bind(("127.0.0.1",10000))whileTrue:#3.接受数据

res = s.recv(1024)print(res)whileTrue:

msg= input(">>>:")#需要获取对方的ip和端口

#s.sendto(msg.encode("utf-8"), ("127.0.0.1", 10000))

#关闭资源

s.close()

六、聊天服务器

importsocket#1.创建socket对象

s = socket.socket(type=socket.SOCK_DGRAM)#2.绑定端口和ip

s.bind(("127.0.0.1",10000))whileTrue:#3.接受数据

res = s.recv(1024)print(res)whileTrue:

msg= input(">>>:")#需要获取对方的ip和端口

#s.sendto(msg.encode("utf-8"), ("127.0.0.1", 10000))

#关闭资源

s.close()

七、聊天客户端

importsocket

client=socket.socket()

client.connect(("127.0.0.1",65535))whileTrue:#发送

client.send(input(">>>:").encode("utf-8"))#接收

data = client.recv(1024).decode("utf-8")print(data)if len(data) ==0:

client.close()break

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值