Python socket 編程學習

Server.py
import socket
HOST = ‘daring.cwi.nl
PORT = 50007
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((HOST ,PORT ))
s.listen(1)
conn,addr = s.accept()
print(‘Connected by’,addr)
while 1:
data = conn.recv(1024)
if not data:break
conn.sendall(data)
conn.close()

Client.py
import socket
HOST=‘127.0.0.1’
PORT = 50007
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((HOST,PORT))
s.sendall(‘Hello,world’)
data = s.recv(1024)
s.close()
print(‘Received’,repr(data))

報錯1 :
s.bind((HOST ,PORT ))
socket.gaierror: [Errno 11001] getaddrinfo failed
解決:將HOST = ‘daring.cwi.nl’ 改爲HOST = ‘127.0.0.1’

報錯2: s.sendall(‘Hello,world’)
TypeError: a bytes-like object is required, not ‘str’
解決:s.sendall(‘Hello,world’)
換成s.sendall(‘Hello,world’.encode(‘UTF-8’))

遺留問題:server.py 啓動後,應該要可以接收多個client發送的請求,但是啓動第二個client.py的時候就報無法連接了 此涉及到多線程 待解決後更新

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章