所以我的 server.py 能够接收客户端正在发送的数据,但它似乎不会离开接收数据的 while 循环。如果我注释掉从客户端接收数据的循环,以及从服务器发送数据的循环,服务器会退出它正在接收数据的 while 循环。此外,客户端和服务器都什么都不做,似乎客户端没有接收到服务器发送的数据。所以我需要帮助弄清楚如何将数据从客户端发送到服务器(这部分看起来不错)然后将数据从服务器发送回客户端(这是我被阻止的地方)。
这是代码
import threading
import time
import random
import socket
def server():
try:
ss = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("[S]: Server socket created")
except socket.error as err:
print('socket open error: {}\n'.format(err))
exit()
server_binding = ('', 50007)
ss.bind(server_binding)
ss.listen(1)
host = socket.gethostname()
print("[S]: Server host name is {}".format(host))
localhost_ip = (socket.gethostbyname(host))
print("[S]: Server IP address is {}".format(localhost_ip))
csockid, addr = ss.accept()
print ("[S]: Got a connection request from a client at {}".format(addr))
# send a intro message to the client.
#msg = "Welcome to CS 352!"
#csockid.send(msg.encode('utf-8'))
msg = csockid.recv(1024)
str1 = "";
while msg:
print('Received:' + msg.decode('utf-8'))
str1 = str1 + msg.decode('utf-8');
msg = csockid.recv(1024)
StringList = str1.split('\n');
print(StringList)
string = "";
for line in StringList:
string1 = line
#string2 = reversed_string(string1);
string2 = '';
string3 = string2 + string1 + '\n';
string = string + string3;
csockid.send((string3).encode('utf-8'));
print(string)
csockid.send(string.encode('utf-8'));
# Close the server socket
ss.close()
exit()
if __name__ == "__main__":
server()
import threading
import time
import random
import socket
def client():
try:
cs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("[C]: Client socket created")
except socket.error as err:
print('socket open error: {} \n'.format(err))
exit()
# Define the port on which you want to connect to the server
port = 50007
localhost_addr = socket.gethostbyname(socket.gethostname())
# connect to the server on local machine
server_binding = (localhost_addr, port)
cs.connect(server_binding)
# Receive data from the server
#data_from_server=cs.recv(100)
#print("[C]: Data received from server: {}".format(data_from_server.decode('utf-8')))
file = open('in-proj0.txt', 'r')
Lines = file.readlines()
for line in Lines:
cs.send((line).encode('utf-8'));
# close the client socket
print("here")
msg = cs.recv(8)
str1 = "";
while msg:
print('Received:' + msg.decode('utf-8'))
str1 = str1 + msg.decode('utf-8');
msg = cs.recv(8)
print(str1);
cs.close()
exit()
if __name__ == "__main__":
client()