Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 服务器没有';不要向客户发送数据_Sockets_Python 3.x_Networking_Network Programming_Python Sockets - Fatal编程技术网

Sockets 服务器没有';不要向客户发送数据

Sockets 服务器没有';不要向客户发送数据,sockets,python-3.x,networking,network-programming,python-sockets,Sockets,Python 3.x,Networking,Network Programming,Python Sockets,我有这段代码供服务器处理客户端。它可以正确地接收数据,但当我想将接收到的数据发送给客户端时,什么也不会发生 服务器 import socket from _thread import * class GameServer: def __init__(self): # Game parameters board = [None] * 9 turn = 1 # TCP parameters specifying

我有这段代码供服务器处理客户端。它可以正确地接收数据,但当我想将接收到的数据发送给客户端时,什么也不会发生

服务器

import socket
from _thread import *


class GameServer:

    def __init__(self):

        # Game parameters
        board = [None] * 9
        turn = 1

        # TCP parameters specifying
        self.tcp_ip = socket.gethostname()
        self.tcp_port = 9999
        self.buffer_size = 2048

        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

        try:
            self.s.bind((self.tcp_ip, self.tcp_port))
        except:
            print("socket error, Please try again! ")

        self.s.listen(5)
        print('Waiting for a connection...')

    def messaging(self, conn):

        while True:
            data = conn.recv(self.buffer_size)
            if not data:
                break

            print("This data from client:", data)
            conn.send(data)

    def thread_run(self):
        while True:
            conn, addr = self.s.accept()
            print('connected to: ' + addr[0] + " : " + str(addr[1]))
            start_new_thread(self.messaging, (conn,))


def main():
    gameserver = GameServer()
    gameserver.thread_run()

if __name__ == '__main__':
    main()
'
我想通过检索发送者的地址,并通过
conn.send()
将接收到的数据完全发送给客户端,但似乎无法通过“send()”方法实现这一点

客户端的一段代码 "


receiver方法不接收任何数据。

我稍微修改了您的代码(因为我使用了python 2.7),并且
conn.send()
似乎工作正常。您也可以尝试
conn.sendall()
。以下是我运行的代码:

服务器代码:

import socket
from thread import *


class GameServer:

    def __init__(self):

        # Game parameters
        board = [None] * 9
        turn = 1

        # TCP parameters specifying
        self.tcp_ip = "127.0.0.1"#socket.gethostname()
        self.tcp_port = 9999
        self.buffer_size = 2048

        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

        try:
            self.s.bind((self.tcp_ip, self.tcp_port))
        except:
            print("socket error, Please try again! ")

        self.s.listen(5)
        print('Waiting for a connection...')

    def messaging(self, conn):

        while True:
            data = conn.recv(self.buffer_size)
            if not data:
                break

            print("This data from client:", data)
            conn.send(data)

    def thread_run(self):
        while True:
            conn, addr = self.s.accept()
            print('connected to: ' + addr[0] + " : " + str(addr[1]))
            start_new_thread(self.messaging, (conn,))


def main():
    gameserver = GameServer()
    gameserver.thread_run()

main()
import socket

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("127.0.0.1", 9999))

def receive_parser():
        #global turn
    s.sendall("hello world")
    rcv_data = s.recv(4096)
        # rcv_data.decode()
        # if rcv_data[:2] == 'c2':
        #     message = rcv_data[2:]
        #     if message[:3] == 'trn':
        #         temp = message[3]
        #         if temp == 2:
        #             turn = -1
        #         elif temp ==1:
        #             turn = 1

        #     elif message[:3] == 'num':
        #         self.set_text(message[3])

        #     elif message[:3] == 'txt':
        #         self.plainTextEdit_4.appendPlainText('client1: ' + message[3:])
        # else:
    print(rcv_data)

receive_parser()
客户端代码:

import socket
from thread import *


class GameServer:

    def __init__(self):

        # Game parameters
        board = [None] * 9
        turn = 1

        # TCP parameters specifying
        self.tcp_ip = "127.0.0.1"#socket.gethostname()
        self.tcp_port = 9999
        self.buffer_size = 2048

        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

        try:
            self.s.bind((self.tcp_ip, self.tcp_port))
        except:
            print("socket error, Please try again! ")

        self.s.listen(5)
        print('Waiting for a connection...')

    def messaging(self, conn):

        while True:
            data = conn.recv(self.buffer_size)
            if not data:
                break

            print("This data from client:", data)
            conn.send(data)

    def thread_run(self):
        while True:
            conn, addr = self.s.accept()
            print('connected to: ' + addr[0] + " : " + str(addr[1]))
            start_new_thread(self.messaging, (conn,))


def main():
    gameserver = GameServer()
    gameserver.thread_run()

main()
import socket

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("127.0.0.1", 9999))

def receive_parser():
        #global turn
    s.sendall("hello world")
    rcv_data = s.recv(4096)
        # rcv_data.decode()
        # if rcv_data[:2] == 'c2':
        #     message = rcv_data[2:]
        #     if message[:3] == 'trn':
        #         temp = message[3]
        #         if temp == 2:
        #             turn = -1
        #         elif temp ==1:
        #             turn = 1

        #     elif message[:3] == 'num':
        #         self.set_text(message[3])

        #     elif message[:3] == 'txt':
        #         self.plainTextEdit_4.appendPlainText('client1: ' + message[3:])
        # else:
    print(rcv_data)

receive_parser()