客戶端:(發送數據)
import socket
import json
import time
class Client(object):
def __init__(self):
self.serverIp = ''
self.serverPort = 9991
self.bufferSize = 1024
self.Arr = (self.serverIp, self.serverPort)
self.client, self.addr = None, None
# 創建socket對象,同時設置通信模式,AF_INET代表IPv4,SOCK_STREAM代表流式socket,使用的是tcp協議
try:
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error as e:
print("Failed to create socket. Error: %s"%e)
# 綁定到我們剛剛設置的ip和端口元組,代表我們的服務運行在本機的9999端口上
self.s.bind(self.Arr)
# 開始監聽,5位最大掛起的連接數
self.s.listen(5)
def ReceiveMessage(self, predict, args, model, tokenizer):
print('服務啟動')
try:
while True:
# 接收來自服務器的數據
print("server waiting")
if self.client == None:
self.client, self.addr = self.s.accept()
print('receive before.')
data = self.client.recv(self.bufferSize)
print('receive after.')
input_Q = str(data, encoding='utf-8')
print('rece: ', input_Q)
pre = predict(args, model, tokenizer, pred_text = input_Q)
print('pre: ', pre)
# 發送給服務器
self.SendMessage(str(pre))
print('繼續接收數據.....\n')
except socket.error:
self.s.close()
def SendMessage(self, pre):
# 發送數據
client = socket.socket()
# 連接服務器
addr = ('127.0.0.1', 9993) # 用於發送給服務器的端口
client.connect(addr)
print('發送數據....')
# 發送數據
client.send(pre.encode('utf-8'))
client.close()
# client.send(pre.encode('utf-8'))
服務器(接收數據):
import socket
import time
def receiveMessage(s):
print("server waiting") # 接收來自服務器的數據
server, _ = s.accept()
print("接收數據ing.")
data = server.recv(1024)
input_Q = str(data, encoding='utf-8')
print('預測結果:', input_Q)
time.sleep(6)
print('繼續發送數據\n')
# 用來發送數據給客戶端的連接
client = socket.socket()
# 連接服務器
addr = ('127.0.0.1', 9991)
client.connect(addr)
# 用來接收客戶端的預測結果
# 創建socket對象,同時設置通信模式,AF_INET代表IPv4,SOCK_STREAM代表流式socket,使用的是tcp協議
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error as e:
print("Failed to create socket. Error: %s"%e)
# 綁定到我們剛剛設置的ip和端口元組,代表我們的服務運行在本機的9999端口上
addr2 = ('127.0.0.1', 9993) # 用來接收客戶端數據的端口
s.bind(addr2)
# 開始監聽,5位最大掛起的連接數
s.listen(5)
server = None
cnt = 0
question = [
'請問羽毛球是冬奧會項目嗎?',
'請問冰球是冬奧會項目嗎',
'請問台球好玩嗎?',
'請問籃球可以鍛煉身體嗎?',
'請問滑雪是什么運動會項目?',
"中國冬奧會速滑可以奪冠嗎?",
'請問小孩喜歡打籃球怎么辦?',
'請問姚明是打什么球的?']
while True:
if cnt == len(question):
break
data = question[cnt]
cnt = cnt + 1
# 發送數據
client.send(data.encode('utf-8')) # 發送給客戶端
receiveMessage(s)
上面可能有問題
服務器端:
import socket
import json
import time
class Client(object):
def __init__(self):
self.serverIp = ''
self.serverPort = 9991
self.bufferSize = 1024
self.Arr = (self.serverIp, self.serverPort)
self.client, self.addr = None, None
# 創建socket對象,同時設置通信模式,AF_INET代表IPv4,SOCK_STREAM代表流式socket,使用的是tcp協議
try:
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error as e:
print("Failed to create socket. Error: %s"%e)
# 綁定到我們剛剛設置的ip和端口元組,代表我們的服務運行在本機的9999端口上
self.s.bind(self.Arr)
# 開始監聽,5位最大掛起的連接數
self.s.listen(5)
def ReceiveMessage(self, predict, args, model, tokenizer):
print('服務啟動')
try:
while True:
# if self.client == None:
self.client, self.addr = self.s.accept()
data = {}
result = ''
text = ''
try:
# while True:
# t = c.recv(2048).decode('utf-8')
# text += t
# if t[-1] == '}':
# break
# data = json.loads(text)
data = self.client.recv(self.bufferSize).decode('utf-8')
print('question: ', data)
if 'input' in data:
result = str(predict(args, model, tokenizer, pred_text = data))
else:
result = str(predict(args, model, tokenizer, pred_text = data))
except Exception as e:
print('Exception: ', e)
if type(result) == str:
result = result.encode('utf-8')
print('pred: ', result)
self.client.send(result)
print('返回結果成功.')
self.client.close()
# self.client.close()
except socket.error:
self.s.close()
self.client.close()
客戶端:
import socket
import time
client = socket.socket()
# 設置服務器端口
addr = ('127.0.0.1', 9991)
client.connect(addr)
# 創建socket對象,同時設置通信模式,AF_INET代表IPv4,SOCK_STREAM代表流式socket,使用的是tcp協議
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error as e:
print("Failed to create socket. Error: %s"%e)
# 綁定到我們剛剛設置的ip和端口元組,代表我們的服務運行在本機的9999端口上
addr2 = ('127.0.0.1', 9993) # 用來接收客戶端數據的端口
s.bind(addr2)
# 開始監聽,5位最大掛起的連接數
s.listen(5)
server = None
# 接收客戶端數據
def receiveMessage(question, s):
print("server waiting")
server, _ = s.accept()
print("接收數據ing.")
data = server.recv(1024)
input_Q = str(data, encoding='utf-8')
print(question, ' 預測結果:', input_Q)
time.sleep(6)
print('繼續發送數據\n')
cnt = 0
question = [
'請問小孩咳嗽總是不好怎么辦?',
'請問中國上一屆比賽冰球是什么名次?',
'請問羽毛球是冬奧會項目嗎?',
'請問冰球是冬奧會項目嗎',
'請問台球好玩嗎?',
'請問籃球可以鍛煉身體嗎?',
'請問滑雪是什么運動會項目?',
"中國冬奧會速滑可以奪冠嗎?",
'請問小孩喜歡打籃球怎么辦?',
'請問姚明是打什么球的?']
while True:
if cnt == len(question):
break
data = question[cnt]
cnt = cnt + 1
# 發送數據
print('發送數據ing....')
client.send(data.encode('utf-8')) # 發送給客戶端
# receiveMessage(question[cnt-1], s) # 接收客戶端返回的預測結果
server_reply = client.recv(1024)
input_Q = str(server_reply, encoding='utf-8')
print(question[cnt-1], ' 預測結果:', input_Q)
time.sleep(6)
print('繼續發送數據\n')