语法
import socket
socket.socket(family,type)
参数说明
**说明
**
示例
import socket
# 创建TCP的套接字 (点对点)
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 发送或者接收信息 ...
# 关闭套接字
s.close()
# 创建UDP的套接字 (一对多,广播形式)
s2=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 发送或者接收信息 ...
# 关闭套接字
s2.close()
**示例
**
**客户端
**
import socket
# 创建UDP的套接字
udpSocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 允许套接口传送广播信息,当option_value不等于0时,允许,否则,禁止
udpSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
port=33333
# ip 为广播形式,也可以用255.255.255.25 表示全局域网都可以接收
network=''
# 发送广播数据
udpSocket.sendto("我在发送数据!!".encode("utf-8"),(network,port))
# 关闭
udpSocket.close()
服务端
import socket
# 创建UDP的套接字
udpSocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 允许套接口传送广播信息
udpSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
port=33333
# 绑定ip和端口,本机ip可以不写
udpSocket.bind(('',port))
# 等待接收方发送数据,1024表示本次接收的最大字节数
data,address=udpSocket.recvfrom(1024)
print("接收到的数据是:%s,地址是:%s"%(data.decode("utf-8"),str(address)))
# 关闭
udpSocket.close()
TCP与UDP的区别
示例
服务端
import socket
# 创建tcp 的套接字
tcp_socekt=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# ip与端口,本机ip可以不写
addr=('',44444)
# 绑定地址
tcp_socekt.bind(addr)
# 使用socket创建的套接字默认的属性是 主动的,使用 listen 将其变为被动,这样就可以接收别人的连接了, 128表示允许的最大连接数
tcp_socekt.listen(128)
# 如果有一个新的客户端来连接服务器,那么就产生一个新的套接字专门为这个客户端服务
# client_socket 用来为这个客户端服务
# tcp_socket 就可以用来专门等待其他新客户端的链接
client_socket,client_addr=tcp_socekt.accept()
# 接收对方发过来的数据
data=client_socket.recv(1024)
print("接收到的数据是:%s,地址是:%s"%(data.decode("utf-8"),str(client_addr)))
# 发送数据到客户端
client_socket.send("hello....".encode("utf-8"))
# 关闭为这个客户端服务的套接字,一旦关闭,就意味着不能再为这个客户端服务了
client_socket.close()
# 关闭外面总的 套接字,一旦关闭,则意味着不再接收任何连接了
tcp_socekt.close()
客户端
import socket
# 创建tcp 套接字
tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 目标服务器地址
dest_addr=("127.0.0.1",44444)
# 连接目标服务器
tcp_socket.connect(dest_addr)
# 发送数据
tcp_socket.send("我是客户端".encode("utf-8"))
# 接收对方发过来的数据,最大接收1024个字节
data=tcp_socket.recv(1024)
print("接收到的数据是:%s"%data.decode("utf-8"))
# 关闭套接字
tcp_socket.close()
全部0条评论
快来发表一下你的评论吧 !