<1>python:网络通信

ip查询

mac:ifconfig
win:ipconfig

TCP与UDP

TCP - 传输控制协议
UDP- 用户数据报协议

dest_ip:目的地址
src_ip:源地址
dest_port:目标端口
src_port:源端口
content:内容

知名端口(0 ~ 1023),动态端口(1024 ~ 65535)
HTTP:80
HTTPS:443
FTP:21

单工:只能单边通信,收或者发信息

半双工:能收或者发信息,但不能同时进行

双工:能同时进行收或者发信息

socket - UDP消息发送与接收

发送:

import socket

# 实例化socket类
# AF_INET:ipv4
# SOCK_DGRAM - udp协议;SOCK_STREAM - tcp协议
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 发送数据
msg = bytes('你好',encoding='unicode_escape')
udp_socket.sendto(msg, ("10.94.86.129",8888))

# 关闭连接
udp_socket.close() 

接收:

import socket

# 实例化socket类,创建连接
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 设置程序端口
localaddr = ("", 8888)
udp_socket.bind(localaddr)

# 接受消息并打印
recv_data = udp_socket.recvfrom(2048)
recv_msg = recv_data[0].decode('unicode_escape')
recv_addr = recv_data[1]

print(recv_addr)
print(recv_msg)

# 关闭连接
udp_socket.close()

socket——UDP消息发送与接收

server端

import socket

def main():
    # 1.买个手机(创建套接字  socket)
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 2.插入电话卡(绑定本地信息 bind)
    local_addr = ('', 8000)
    tcp_socket.bind(local_addr)

    # 3.设置为响铃模式(让默认的套接字由主动变为被动 listen)
    tcp_socket.listen(128)

    # 4.等待别人的电话(等待客户端链接 accept);tcp_socket负责监听,accept返回的socket负责通信
    new_tcp_socket, client_addr = tcp_socket.accept()

    # 5.接听(接收数据 recv)
    recv_data = new_tcp_socket.recv(1024)
    recv_msg = recv_data.decode('unicode_escape')

    print(recv_msg)

    # 6.回复
    msg = input()
    msg = bytes(msg, encoding='unicode_escape')
    new_tcp_socket.send(msg)

    # 7.挂断
    new_tcp_socket.close()
    tcp_socket.close()


if __name__ == '__main__':
    main()

client端

import socket

def main():
    # 1.创建套接字
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 2.绑定端口
    tcp_socket.bind(('',8001))

    # 3.连接服务器
    tcp_socket.connect(('127.0.0.1', 8000))

    # 4.发送消息
    msg = input()
    msg = bytes(msg, encoding='unicode_escape')
    tcp_socket.send(msg)

    # 5.接收消息
    recv_data = tcp_socket.recv(1024)
    recv_msg = recv_data.decode('unicode_escape')

    print(recv_msg)

    # 6.关闭
    tcp_socket.close()

    exit()

if __name__ == '__main__':
    main()
posted @   漓白  阅读(23)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示