[Python开发] python使用socket通信

本文提供了Python中使用socket库进行TCP和UDP通信的完整示例代码,包括服务器端和客户端实现,适用于初学者快速上手网络编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里主要整理一下python官网给的sample:https://docs.python.org/3/library/socket.html
官网给出了支持IPv4的tcp代码,这里也给出udp的代码,两者基本类似。

  • tcp_server.py
# Echo server program
from socket import *
from time import ctime

HOST = ''                 # Symbolic name meaning all available interfaces
PORT = 50007              # Arbitrary non-privileged port
BUFSIZE = 1024
ADDR = (HOST, PORT)

tcpServerSocket = socket(AF_INET, SOCK_STREAM)
tcpServerSocket.bind(ADDR)
tcpServerSocket.listen(5)

while True:
    print('waiting for connection...')
    tcpClientSocket, address = tcpServerSocket.accept()
    print('...connected by', address)

    while True:
        data = tcpClientSocket.recv(BUFSIZE).decode()
        print(data)
        if not data:
            break
        tcpClientSocket.send(('[%s] %s' % (ctime(), data)).encode())

    tcpClientSocket.close()
tcpServerSocket.close()
  • tcp_client.py
# Echo client program
from socket import *

HOST = '127.0.0.1'
PORT = 50007              # The same port as used by the server
BUFSIZE = 1024
ADDR = (HOST, PORT)

tcpClientSocket = socket(AF_INET, SOCK_STREAM)
tcpClientSocket.connect(ADDR)
print('connected to', ADDR)
while True:
    data = input('> ')
    if not data:
        break
    tcpClientSocket.send(data.encode())
    data = tcpClientSocket.recv(BUFSIZE).decode()
    if not data:
        break
    print(data)

tcpClientSocket.close()
  • udp_server.py
# Echo server program
from socket import *
from time import ctime

HOST = ''                 # Symbolic name meaning all available interfaces
PORT = 50007              # Arbitrary non-privileged port
BUFSIZE = 1024
ADDR = (HOST, PORT)

udpServerSocket = socket(AF_INET, SOCK_DGRAM)
udpServerSocket.bind(ADDR)

while True:
    print('waiting for message...')
    data, address = udpServerSocket.recvfrom(BUFSIZE)
    data = data.decode()
    print('...received from', address)
    print(data)
    udpServerSocket.sendto(('[%s] %s' %(ctime(), data)).encode(), address)

udpServerSocket.close()
  • udp_client.py
# Echo client program
from socket import *

HOST = '127.0.0.1'
PORT = 50007              # The same port as used by the server
BUFSIZE = 1024
ADDR = (HOST, PORT)

while True:
    udpClientSocket = socket(AF_INET, SOCK_DGRAM)
    udpClientSocket.connect(ADDR)
    data = input('> ')
    if not data:
        break
    udpClientSocket.send(('%s\r\n' % data).encode())
    data = udpClientSocket.recv(BUFSIZE).decode()
    if not data:
        break
    print(data)

udpClientSocket.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值