python实现TCP和UDP服务器

泄露秘密 提交于 2020-01-08 09:35:42

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()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!