python实现TCP和UDP服务器

python深入浅出进阶教程视频参考

sendto

import socket
updSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
updSocket.sendto("helloworld!".encode('utf-8'),("172.20.52.75", 3333))
updSocket.close()

bind

import socket
udpSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udpSocket.bind(("172.20.52.75", 6666)) # IP省略表示是自己的IP 绑定发送方的端口 内部是一个元组
udpSocket.sendto("hello world!".encode("UTF-8"),("172.20.52.75", 4444)) #对方IP和Port
data = udpSocket.recvfrom(1024) #阻塞
print(data[0].decode("gbk")) #内容
print(data[1]) #IP和port
udpSocket.close()

broadcast

import socket
udpSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udpSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, True) #设置广播
udpSocket.sendto("哈哈 打不过我吧~ 啦啦啦~".encode("GBK"), ("255.255.255.255", 7777))
udpSocket.close()

TCPclient

import socket
address = '127.0.0.1'    #监听哪些网络127.0.0.1是监听本机 0.0.0.0是监听整个网络
tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #创建套接字
#tcpSocket.bind(("",12345)) #元组
tcpSocket.connect(("172.20.52.75",7777))
tcpSocket.send('约吗?'.encode("GBK")) #已经建立了连接 直接发送
recvData = tcpSocket.recv(1024)
print(recvData.decode("GBK"))
tcpSocket.close()

TCPserver

import socket
tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #创建套接字
tcpSocket.bind(("",8080)) #元组
tcpSocket.listen(128) #监听上限 在windows 128有效 在linux无效
newSocket,ipPort = tcpSocket.accept() #阻塞等待客户端连接 ipPort是个元组只有两个元素
print(ipPort[0]) #IP
print(ipPort[1]) #port
recvData = newSocket.recv(1024)
print(recvData.decode("GBK"))
newSocket.close()
tcpSocket.close()

TCPserver接收多条信息

import socket
tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #创建套接字
tcpSocket.bind(("",8080)) #元组
tcpSocket.listen(128) #监听上限 在windows 128有效 在linux无效
newSocket,ipPort = tcpSocket.accept() #阻塞等待客户端连接 ipPort是个元组只有两个元素
print(ipPort[0]) #IP
print(ipPort[1]) #port
while True:
    recvData = newSocket.recv(1024)
    # 当接收到数据为空的时候,表示客户端已经断开连接了
    if recvData:
        print(recvData.decode("GBK"))
    else:
        print("客户端断开连接!")
        newSocket.close()
        break
tcpSocket.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值