两个客户端无法在套接字客户端-服务器连接中互相交谈

瓦纳毕赤

当一个客户端发送输入时,在第二个客户端中,它没有打印消息(即未收到消息)。当第二个客户端发送输入时,在第一个客户端中它没有打印消息(即未收到消息)。

我了解到,client.send(message)在服务器脚本中,它会将消息发送到连接到服务器的所有客户端,因此您无需指定发送给谁。

客户

import socket
import threading

class sendThread(threading.Thread):
    def __init__(self, ip, port, client):
        threading.Thread.__init__(self)
        self.port = port
        self.ip = ip
        self.client = client
        print "[+] New send thread started for "+ip+":"+str(port) + "...Everything went successful!"

    def run(self):
        while True:
            data = raw_input("Enter command:")
            self.client.send(data)

class receiveThread(threading.Thread):
    def __init__(self, ip, port, client):
        threading.Thread.__init__(self)
        self.ip = ip
        self.port = port
        self.client = client
        print "[+] New receive thread started for "+ip+":"+str(port) + "...Everything went successful!"

    def run(self):
        print "Entered run method"
        size = 1024
        while True:
            data = self.client.recv(size)
            if data != "" or data:
                print data


def client():
    port = 1724
    ip = '127.0.0.1'
    print "Connection from : "+ip+":"+str(port)
    client = socket.socket()
    client.connect((ip, port))
    receive = receiveThread(ip, port, client)
    print "b1"
    receive.start()
    print "b2"
    send = sendThread(ip, port, client)
    print "b3"
    send.start()
    while send.isAlive() and receive.isAlive():
        continue
    print "-----END of While TRUE------"
    print "Client disconnected..."

client()

服务器

import socket
import threading

global num
num = 0

class serverThread(threading.Thread):
    def __init__(self, client, address):
        global num
        num = num + 1
        self.id = num
        threading.Thread.__init__(self)
        self.client = client
        self.address = address
        print "serverThread init finished-" + str(self.id)

    def run(self):
        print "r1 num-" + str(self.id)
        size = 1024
        while True:
                print "r2-" + str(self.id)
                data = self.client.recv(size)
                print "r3..... " + data
                print "r4-" + str(self.id)
                if data:
                    print "r5-" + str(self.id)
                    response = data

                    self.client.send(response)
                    print "r6-" + str(self.id)
                else:
                    print "r7-" + str(self.id)
                    raise Exception('Client disconnected-' + str(self.id) )

def create(ipHost, port):
    server = socket.socket()
    server.bind((ipHost, port))
    print "The server was created successfully."
    return server

def listen(server):
    server.listen(5)
    client, address = server.accept()
    c1 = serverThread(client, address)
    c1.start()
    client, address = server.accept()
    c2 = serverThread(client, address)
    c2.start()
    print "finished both threads created"

    while c1.isAlive() and c2.isAlive():
        continue

server = create("0.0.0.0", 1724)
listen(server)

两个客户端都有以下输出:

Connection from : 127.0.0.1:1720
[+] New receive thread started for 127.0.0.1:1720...Everything went successful!
b1
Entered run method
b2
[+] New send thread started for 127.0.0.1:1720...Everything went successful!
b3
Enter command:Hello
Enter command:Hello

当两个客户端发送相同的消息时就是这种情况(因此两者都将出现Enter command:Hello在其输出中。

如果客户端1发送“ Hello”,而客户端2发送“ Hi”:客户端1将具有输出Hello,客户端2将具有输出Hi,而不是在输出Hi中同时接收和打印Hello

注意:如果您向我展示我的错误,而不是向我展示新版本,将不胜感激。

丹尼尔

您的错误是,您仅将文本从客户端发送回相同的客户端:

self.client.send(response)

即客户c1和客户c2是独立的,彼此之间并不认识。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

简单客户端-服务器在Java中互相交谈的类

来自分类Dev

简单客户端-服务器在Java中互相交谈的类

来自分类Dev

使用python和Typscript连接两个套接字(客户端和服务器)

来自分类Dev

socket.io - 客户端通过同一服务器连接到两个套接字

来自分类Dev

两个Azure VM上的NFS服务器和客户端,客户端无法连接

来自分类Dev

服务器/客户端套接字连接

来自分类Dev

两个客户端无法成功连接到服务器

来自分类Dev

套接字客户端连接

来自分类Dev

客户端套接字连接被拒绝

来自分类Dev

套接字中的Java客户端

来自分类Dev

TCP客户端套接字无法在onActivityResult()中运行

来自分类Dev

无法从Java套接字服务器接收数据到C套接字客户端

来自分类Dev

套接字服务器正在运行,但客户端无法连接

来自分类Dev

使用套接字在客户端阻止的客户端-服务器通信

来自分类Dev

客户端/服务器/客户端通过套接字通信

来自分类Dev

Python套接字服务器/客户端编程

来自分类Dev

C客户端/服务器套接字错误

来自分类Dev

套接字编程-简单的客户端/服务器

来自分类Dev

客户端js上的套接字服务器?

来自分类Dev

Java客户端/服务器套接字问题

来自分类Dev

Java TCP 客户端/服务器套接字

来自分类Dev

服务器无法通过C中的套接字向客户端发送消息

来自分类Dev

客户端套接字无法连接到服务器套接字,[Errno 32] 管道损坏错误

来自分类Dev

接受两个客户端套接字作为一对一游戏的服务器;在教程中出错?

来自分类Dev

将客户端套接字与服务器套接字连接时出现问题

来自分类Dev

如何使服务器套接字广播到那里,并让客户端套接字检测并连接

来自分类Dev

PHP客户端套接字与C#套接字服务器的连接

来自分类Dev

客户端在套接字关闭服务器连接之前,客户端打印一半数据

来自分类Dev

与许多客户端进行套接字编程中的客户端到客户端通信

Related 相关文章

  1. 1

    简单客户端-服务器在Java中互相交谈的类

  2. 2

    简单客户端-服务器在Java中互相交谈的类

  3. 3

    使用python和Typscript连接两个套接字(客户端和服务器)

  4. 4

    socket.io - 客户端通过同一服务器连接到两个套接字

  5. 5

    两个Azure VM上的NFS服务器和客户端,客户端无法连接

  6. 6

    服务器/客户端套接字连接

  7. 7

    两个客户端无法成功连接到服务器

  8. 8

    套接字客户端连接

  9. 9

    客户端套接字连接被拒绝

  10. 10

    套接字中的Java客户端

  11. 11

    TCP客户端套接字无法在onActivityResult()中运行

  12. 12

    无法从Java套接字服务器接收数据到C套接字客户端

  13. 13

    套接字服务器正在运行,但客户端无法连接

  14. 14

    使用套接字在客户端阻止的客户端-服务器通信

  15. 15

    客户端/服务器/客户端通过套接字通信

  16. 16

    Python套接字服务器/客户端编程

  17. 17

    C客户端/服务器套接字错误

  18. 18

    套接字编程-简单的客户端/服务器

  19. 19

    客户端js上的套接字服务器?

  20. 20

    Java客户端/服务器套接字问题

  21. 21

    Java TCP 客户端/服务器套接字

  22. 22

    服务器无法通过C中的套接字向客户端发送消息

  23. 23

    客户端套接字无法连接到服务器套接字,[Errno 32] 管道损坏错误

  24. 24

    接受两个客户端套接字作为一对一游戏的服务器;在教程中出错?

  25. 25

    将客户端套接字与服务器套接字连接时出现问题

  26. 26

    如何使服务器套接字广播到那里,并让客户端套接字检测并连接

  27. 27

    PHP客户端套接字与C#套接字服务器的连接

  28. 28

    客户端在套接字关闭服务器连接之前,客户端打印一半数据

  29. 29

    与许多客户端进行套接字编程中的客户端到客户端通信

热门标签

归档