在python socket(一)中,客戶端每次只能發送一次消息,然後連接就斷開。
把客戶端修改一下,加入一個循環就能讓它發送多個消息和接收。
server端代碼:
# -*- coding: utf-8 -*-
##
# socket_server
# Created on July 7 2016
# @author:huangpingyi
##
import socket
HOST = '' # 本地localhost
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 True:
data = conn.recv(1024) # 1024個字節
#單連接,沒有數據斷開,服務器斷開
if not data:
break
print 'Received', data
msg = raw_input(">>:").strip()
if len(msg) == 0:
continue
#s.sendall('Hello Huangpingyi')
conn.sendall(msg)
conn.close()
client端
# -*- coding: utf-8 -*-
##
# socket_client
# Created on July 7 2016
# @author:huangpingyi
##
import socket
HOST = 'localhost'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
while True:
msg = raw_input(">>:").strip()
if len(msg) == 0:
continue
elif msg == "exit":
break
#s.sendall('Hello Huangpingyi')
s.sendall(msg)
data = s.recv(1024)
print 'Received', data
s.close()
客戶端先發消息,因爲服務器端是被動的,只有監聽到客戶端有連接時才能迴應。
客戶端輸入exit時,連接斷開。