1
python tcp chat 서버에 연결된 모든 클라이언트에 데이터를 보내는데 문제가 있습니다. 나는 메시지/데이터를 보내는 사람에게 바로 보내도록하는 방법을 알고 있지만 여러 클라이언트가있는 경우에는 다시 보내지 않을 것입니다. 이것은 지금까지 내 서버입니다 : 내가 지금까지 클라이언트 측과 매우 간단한을위한 Node.js를 사용하고python tcp 서버가 여러 클라이언트에 데이터를 전송하는 중
host = '127.0.0.1'
port = 4446
backlog = 5
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(backlog)
clients = [s]
while 1:
inputReady, outputReady, exceptReady = select.select(clients, [], [])
for x in inputReady:
if x == s:
csock, addr = s.accept()
clients.append(csock)
else:
data = x.recv(size)
if data:
for i in clients: #problem i believe is in here but i
i.send(data) #dont know how to fix it
else:
x.close()
clients.remove(x)
s.close()
와 나는 그 문제를 생각 해달라고 :
var net = require('net');
var readline = require('readline');
var host = process.argv[2];
var port = process.argv[3];
var username = process.argv[4];
var client = new net.Socket();
client.connect(port, host, function(){
var type = "connect";
var sender = username;
var msg = "has connected";
var s = type + ':' + sender + ':' + msg;
var length = s.length;
client.write(length + " " + s);
});
client.on('data', function(data){
console.log(data.toString('UTF-8'));
});
알려지지 않은 송신 코드에 버그가 있습니다. 'send'의 반환 값을 확인하는 것을 잊었습니다. 그 방법에 대한 문서를 읽고 왜 이것이 필요한지 알아보십시오. 블로킹 소켓을 사용하기 때문에 서버가 가장 느린 클라이언트가 처리 할 수있는 속도로 데이터를 처리 할 수 있습니다. http://twistedmatrix.com/에서 파이썬의 네트워크 프로그래밍에보다 쉽게 접근 할 수 있습니다 (파이썬의 경우 Node.js와 비슷합니다). –