0

所以我的 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()
4

0 回答 0