私は Python のソケット接続用のサーバーとクライアントです。
クライアント:
import socket
import sys
from sys import stdin
serv = 'ip goes here'
port = 8888
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((serv, port))
def prompt():
sys.stdout.write('<You> ')
sys.stdout.flush()
def send(x):
sock.sendall(x)
rec = 0
ex = len(x)
while rec < ex:
data = sock.recv(16)
rec += len(data)
while 1:
if sock:
data = sock.recv(16)
if len(data) == 0:
pass
print '<Server> %s' % data
prompt()
msg = stdin.readline()
sock.sendall(msg)
私が今持っている方法では、1つのクライアントで何かを言うと、両方のクライアントに「アルファベット」を送信しますが、他のクライアントは stdin.readline() が発生するのを待っているため、新しいメッセージを送信するまでそれを受信しません. クライアントが常にサーバーからデータを受信し、 stdin.readline() を最初に実行しなくてもデータが表示されるようにする方法を考えていました。
ありがとう