日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TCP程序流程及服务器客户端

發布時間:2024/7/5 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TCP程序流程及服务器客户端 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


?

Tcp服務器創建:

import socket

?

# 服務器的端口號

PORT = 9000

?

# 創建套接字socket對象,用于進行通訊

# scoket.SOCK_STREAM 表明使用tcp協議,流式協議

# 監聽socket

server_sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

?

# 為服務器的socket綁定一個固定的地址,ip和端口,元祖

address = ("", PORT)

server_sock.bind(address)

?

# 讓服務器開啟監聽,可以收到客戶端的連接請求

#listen參數表示監聽隊列的大小,最多能同時處理三次握手的客戶端數量

server_sock.listen(128)

?

# 接受客戶端的連接請求,與客戶端完成三次握手

# accept函數是阻塞,如果當前沒有客戶端發起連接,則會阻塞等待直到有客戶端發起連接

# new_sock是一個新的socket對象,用來跟這個連接的客戶端進行一對一數據傳輸使用

# client_addr是建立連接的客戶端的地址,ip和端口? 元祖

new_sock, client_addr = server_sock.accept()

?

# print("客戶端 %s 已經建立了連接"% str(client_addr))

print("客戶端 %s 已經建立了連接" % (client_addr,))

?

# 接收客戶端的數據

recv_data = new_sock.recv(1024)

?

print("接收到了客戶端 %s 傳來的數據: %s" % (client_addr, recv_data.decode()))

?

# 向客戶端發送數據

?

msg = input("請輸入要傳給客戶端的數據:")

?

new_sock.send(msg.encode())

?

# 如果沒有數據再傳給客戶端,可以關閉連接

new_sock.close()

?

# 如果不想再接收新的客戶端的連接請求,可以關閉server_sock

server_sock.close()

測試:

我們暫時還沒有寫tcp客戶端,可以用nc命令來作為客戶端進行測試。

# nc 服務器的IP 服務器的端口
nc 127.0.0.1 8000

?

TCP客戶端創建:

import socket

?

# 創建socket對象,用于通信

client_sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

?

# 對于客戶端,可以不用綁定一個固定地址,使用操作系統分配的即可

?

# 向服務器發起連接請求, 并完成三次握手

server_addr = ("127.0.0.1", 9000)

client_sock.connect(server_addr)

?

# 向服務器發送數據

msg = input("請輸入要發送的數據:")

client_sock.send(msg.encode())

?

# 接收服務器傳回來的數據

recv_data = client_sock.recv(1024)

print("收到了由服務器傳回的數據:%s" % recv_data.decode())

?

# 如果客戶端不想再次發送數據,可以關閉連接

client_sock.close()

?

測試:

可以用我們剛才寫的服務器程序,也可用nc命令進行測試

# -l參數表示服務器監聽
# nc -l 綁定的服務器ip 端口
nc -l 127.0.0.1 8000

總結

以上是生活随笔為你收集整理的TCP程序流程及服务器客户端的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。