客戶端和服務端其實是對等的。只不過服務端是bind一個地址,客服端是connect一個地址。另外服務端需要調用listen()函數使得服務端可以接受連接請求。send,sendall,recv等等是兩邊都可以用的。下面是示例。
server.py
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(),1234))
s.listen(5)
while True:
socketClient, address = s.accept()
print(f"connection of {address} is established!")
data = socketClient.recv(1024)
data = data.decode("utf-8")
socketClient.send(bytes(f"Hi {data}, Welcome to server!","utf-8"))
socketClient.close
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((socket.gethostname(), 1234))
s.sendall(bytes("raines","utf-8"))
full_msg = ""
while True:
st = s.recv(8)
if len(st) <= 0:
break
st = st.decode("utf-8")
full_msg += st
print(full_msg)