TCP編程UDP編程

客戶端

# 導(dǎo)入socket庫(kù):
import socket
#socket.AF_INET 表示ip4,SOCK_STREAM流的形式
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 建立連接:
s.connect(('127.0.0.1', 9999))
# 接收歡迎消息:
print(s.recv(1024).decode('utf-8'))
for data in [b'Michael', b'Tracy', b'Sarah']:
    # 發(fā)送數(shù)據(jù):
    s.send(data)
    print(s.recv(1024).decode('utf-8'))
s.send(b'exit')
s.close()

服務(wù)端

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 監(jiān)聽端口:
s.bind(('127.0.0.1', 9999))
#5表示最大連接數(shù)量
s.listen(5)
#接下來(lái),服務(wù)器程序通過(guò)一個(gè)永久循環(huán)來(lái)接受來(lái)自客戶端的連接,accept()會(huì)等待并返回一個(gè)客戶端的連接:
print('Waiting for connection...')
while True:
    # 接受一個(gè)新連接:
    sock, addr = s.accept()
    # 創(chuàng)建新線程來(lái)處理TCP連接:
    t = threading.Thread(target=tcplink, args=(sock, addr))
    t.start()
#每個(gè)連接都必須創(chuàng)建新線程(或進(jìn)程)來(lái)處理,否則,單線程在處理連接的過(guò)程中,無(wú)法接受其他客戶端的連接:
def tcplink(sock, addr):
    print('Accept new connection from %s:%s...' % addr)
    sock.send(b'Welcome!')
    while True:
        data = sock.recv(1024)
        time.sleep(1)
        if not data or data.decode('utf-8') == 'exit':
            break
        sock.send(('Hello, %s!' % data.decode('utf-8')).encode('utf-8'))
    sock.close()
    print('Connection from %s:%s closed.' % addr)
Paste_Image.png

UDP

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

for data in [b'Michael', b'Tracy', b'Sarah']:

# 發(fā)送數(shù)據(jù):

s.sendto(data, ('127.0.0.1', 9999))

# 接收數(shù)據(jù):

print(s.recv(1024).decode('utf-8'))

s.close()
#!/usr/bin/env python3

# -*- coding: utf-8 -*-

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:

# 接收數(shù)據(jù):

data, addr = s.recvfrom(1024)

print('Received from %s:%s.' % addr)

reply = 'Hello, %s!' % data.decode('utf-8')

s.sendto(reply.encode('utf-8'), addr)
Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容