python网络编程

本文深入探讨了TCP和UDP两种网络通信协议的实现方式,包括客户端和服务端的代码示例,详细展示了数据如何在网络中传输的过程。

tcp通信

#客户端
from socket import *
from  time import time

HOST='localhost'
PORT=21567
BUFSIZE=1024
ADDR=(HOST,PORT)


tcpClickSock=socket(AF_INET,SOCK_STREAM)
tcpClickSock.connect(ADDR)

while True:
    try:
        data=input('>>')
        data=data.encode()
        if not data:
            break
        tcpCliSock.send(data)
        data.tcpCliSock.recv(BUFSIZE)
        if not data:
            break
        print('server:'data)
    except ValueErroe:
        print("Error")

tcpCliSock.close()
#server

from socket import *
from time import time

HOST='loclhost'
PORT=21567
BUFSIZE=1024
ADDR=(HOST,PORT)


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


while True:
    try:
        print('waiting for connection...')
        tcpCliSock,addr=tcpSerSock.accept()
        print(u'connected client from:',addr)

        while True:
            data=tcpCliSock.recv(BUFSIZE)
            if not data:
                break
            else:
                print('client:',data)
            tcpCliSock.send(bytes(bytes('[%s]%s'(ctime(),data.decode('utf-8')),'utf-8')))
    except ValueError:
        print("Error")

tcpSerSock.xlose()                       
         
         

 

UDP通信

#udp server

from socket import *
from time import ctime
 
HOST = ''
PORT = 21567
BUFSIZE = 1024
addr = (HOST,PORT)
 
udpSerSock = socket(AF_INET,SOCK_DGRAM)
udpSerSock.bind(addr)
 
while True:
    print("Waiting for message...")
    data,addr=udpSerSock.recvfrom(BUFSIZE)
    if not data:
        break
    data = data.decode(encoding='utf-8')
    data="client at %s:%s"%(ctime(),data)
    print("Received from and returned to :", addr)
    udpSerSock.sendto(data.encode(encoding='utf-8'),addr)
udpSerSock.close()

#udp client
from socket import *
 
HOST = 'localhost'
PORT = 21567
BUFSIZE = 1024
addr = (HOST,PORT)
 
udpCliSock = socket(AF_INET,SOCK_DGRAM)
 
while True:
    data=input('>')
    if not data:
        break
    data=data.encode("utf-8")
    udpCliSock.sendto(data,addr)
    data,addr=udpCliSock.recvfrom(BUFSIZE)
    print(data.decode(encoding="utf-8"),'from',addr)

udpCliSock.close()

参考:

https://blog.youkuaiyun.com/cyx441984694/article/details/79382213

https://blog.youkuaiyun.com/qq_33733970/article/details/77763009

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值