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

网络编程

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()




猜你喜欢

转载自blog.csdn.net/RikkaTakanashi/article/details/80355616
今日推荐