1. 程式人生 > 實用技巧 >網路程式設計: 套接字基於TCP的應用

網路程式設計: 套接字基於TCP的應用

1、模擬通訊,進行訊息收發

【1】初版server端

from socket import *
# 1、建立套接字物件
sock = socket(family = AF_INET,type = SOCK_STREAM,proto = 0)
# 2、繫結地址
sock.bind(("127.0.0.1",8989))
# 3、設定監聽
sock.listen(5)
#4、等待連線
print("等待客戶端連線...")
connd,addr = sock.accept()
print("已有客戶端連線:",addr)

#5、訊息收發
#接收訊息
data = connd.recv(1024)
print
("伺服器收到的訊息:",data.decode()) #給連線的客戶端回覆訊息, #給連線的客戶端回覆訊息, # send方法的引數必須為位元組串,【1】【2】兩種方式均可以 #【1】對訊息進行編碼,轉換為位元組串 #使用【2】的話,不能使用中文,只能為ASCII編碼 # sed = connd.send("The server accepted your msg.".encode()) # 【1】 sed = connd.send(b"The server accepted your msg.") #【2】 print("send %d bytes"%sed) #6、關閉套接字 connd.close() sock.close()

【1】初版client端  

import socket
# 1、建立套接字物件
sock = socket.socket()
#-------------------
# import匯入方式匯入socket的話,socket方法不能新增引數,server也一樣。
# from import *方式匯入時可以新增引數 #python版本:3.7.6
#sock = socket.socket(sock_family = AF_INET, sock_type = SOCK_STREAM,proto = 0)
# Traceback (most recent call last):
#   File "D:/python_program/TCP/tcp-client.py", line 4, in <module>
# sock = socket.socket(sock_family = AF_INET, sock_type = SOCK_STREAM,proto = 0) # NameError: name 'AF_INET' is not defined #------------------ #2 、發起連線 sock.connect(("127.0.0.1",8989)) #3、訊息收發 #輸入要傳送的訊息 msg = input("請輸入要傳送的訊息:Msg>>>") #傳送訊息 #----- #sed=sock.send(msg.encode()) #print("send %d bytes"%sed) #---- sock.send(msg.encode()) # 接收訊息 data = sock.recv(1024) print("收到伺服器回覆的訊息:",data.decode()) #4、關閉套接字 sock.close()

#===========================================================================#