Python爬虫开发与项目实战读书笔记__Part2

本文详细介绍并演示了使用Python进行TCP和UDP网络编程的方法。包括服务端与客户端的搭建流程,通过具体代码展示了如何创建服务端以监听连接请求、接收及发送数据,以及如何在客户端发起连接并收发信息。

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

网络编程

TCP编程

创建服务端

import socket
import threading
import time
def dealClient(sock,addr):
    #第四步:接受传来的数据,并发送给对方数据
    print('Accept new connection from %s:%s...'%addr)
    sock.send(b'Hello,I am server!')
    while True:
        data=sock.recv(1024)
        time.sleep(1)
        if not data or data.decode('utf-8')=='exit':
            break
        print ('-->>%s!' %data.decode('utf-8'))
        sock.send(('Loop_Msg: %s!' % data.decode('utf-8')).encode('utf-8'))
    #第五步:关闭Socket
    sock.close()
    print('Connection from %s:%s closed'%addr)
if __name__=="__main__":
    #第一步 创建一个基于IPV4TCP协议的socket
    #Socket绑定的IP(127.0.0.1为本机IP)与端口
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.bind(('127.0.0.1',9999))
    #第二步 监听连接
    s.listen(5)
    print('Waiting for connection...')
    while True:
        #第三步:接收一个新连接
        sock,addr=s.accept()
        #创建新线程来处理TCP连接:
        t=threading.Thread(target=dealClient,args=(sock,addr))
        t.start()

创建客户端

import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(('127.0.0.1',9999))
print('-->'+s.recv(1024).decode('utf-8'))
s.send(b'Hello,I am a client')
print('-->>',s.recv(1024).decode('utf-8'))
s.send(b'exit')
s.close()

将两者放到两个.py文件中,先启动服务端

Waiting for connection...

再启动客户端

-->Hello,I am server!

-->> Loop_Msg: Hello,I am a client!

客户端

Waiting for connection...
Accept new connection from 127.0.0.1:60893...
-->>Hello,I am a client!

Connection from 127.0.0.1:60893 closed


UDP编程

服务端

import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(('127.0.0.1',9999))
print('Bind UDP on 9999...')
while True:
    data,addr=s.recvfrom(1024)
    print('Received from %s:%s.'%addr)
    s.sendto(b'Hello,%s!'%data,addr)

客户端


import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
for data in [b'Hello',b'World']:
    s.sendto(data,('127.0.0.1',9999))
    print(s.recv(1024).decode('utf-8'))
s.close()




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值