comunicación python udp y tcp

1. comunicación python udp

El servidor se ejecuta primero

import socket
import time


def recv_msg(udp_socker):
    recv_data = udp_socker.recvfrom(1024)  #接收最大1024字节大小的数据
    print("%s:%s" % (str(recv_data[1]), recv_data[0].decode("utf-8")))  #接收的数据是数组,第一个是ip:端口,第二个值才是数据

if __name__ == "__main__":
    udp_socket2 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    udp_socket2.bind(("", 7789))
    # 接收并显示
    while True:
        recv_msg(udp_socket2)
        time.sleep(1)

Cliente envía datos

import socket

def send_msg(udp_socket):
    #发送信息
    dest_ip = "127.0.0.1"  #没有服务器,就本机做服务器
    dest_port = 7789
    send_data = "111he11lloworld"
    udp_socket.sendto(send_data.encode("utf-8"),(dest_ip,dest_port))



def main():
    # 创建套接字
    udp_socket1 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 绑定信息
    udp_socket1.bind(("", 7788))
    # 发送
    send_msg(udp_socket1)


if __name__ == "__main__":
    main()

2. comunicación TCP de Python

Servidor

import socket

def main():
    tcp_server_socker = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    tcp_server_socker.bind(("",7789))
    #服务器拒绝(超过限制数量的)连接之前,操作系统可以挂起的最大连接数量,即最大连接数
    tcp_server_socker.listen(128)

    #连接监听,这是个阻塞函数
    new_client_socket, client_addr = tcp_server_socker.accept()
    print(client_addr)
    #接收数据,缓存池1024字节大小
    recv_data = new_client_socket.recv(1024)
    print(recv_data)
    print("接收数据"+str(recv_data,encoding="utf-8"))

    #回送数据
    new_client_socket.send("success receive".encode())

    #后置动作,关闭套接字
    new_client_socket.close()
    tcp_server_socker.close()

if __name__ == "__main__":
    while True:
        main()

cliente

import socket
import json
import time
import datetime


def main():
    tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_addr = ("127.0.0.1",7789)
    tcp_client_socket.connect(server_addr)

    #发送数据
    print("ready to sending")
    date = (datetime.datetime.now()).strftime("%Y-%m-%d %H:%M:%S")
    data = f'<46>USM |1|{date}|1|1|dfs1|10.5.68.136|登录系统: 密码登录||\n'

    tcp_client_socket.send(data.encode("utf-8"))
    print("success to send---")
    recv_data = tcp_client_socket.recv(1024)
    print("recv:"+str(recv_data,encoding="utf-8"))


    #释放socket
    tcp_client_socket.close()

if __name__ == "__main__":
    main()

Los datos enviados aquí están en formato syslog. Los datos estándar deben agregarse con \n (dark pit) al final. Si está realizando una demostración, puede omitirlos.

Supongo que te gusta

Origin blog.csdn.net/Mr_wilson_liu/article/details/128538520
Recomendado
Clasificación