서버와 여러 클라이언트로 프로그램을 구현하고 있습니다. 모든 클라이언트는 서버에 데이터를 보내고 서버는 각 클라이언트의 단계를 체크 아웃합니다. 모든 클라이언트의 단계가 동일하면 서버는 다음 단계를 수행하기 위해 모든 클라이언트에 새 데이터를 보냅니다. 그리고이 과정을 계속 반복합니다.Python : 여러 클라이언트와 서버를 처리하는 방법
그러나 프로그램을 실행하면 서로 통신 할 수 없습니다. 여기에 내 코드가있다. 힌트 좀 줄래?
클라이언트 & 클라이언트는 순서를 필요로하는 동안 서버가, 순서 socket()
, bind()
, listen()
, accept()
(아마도 하나 이상의 클라이언트를 서비스하기 위해 accept()
를 반복)을 수행해야
#client
from socket import *
from sys import *
import time
import stat, os
import glob
# set the socket parameters
host = "localhost"
port = 21567
buf = 1024
data = ''
addr = (host, port)
UDPSock = socket(AF_INET, SOCK_DGRAM)
UDPSock.settimeout(100)
def_msg = "=== TEST ==="
#FILE = open("test.jpg", "w+")
FILE = open("data.txt","w+")
while (1):
#data, addr = UDPSock.recvfrom(buf)
print "Sending"
UDPSock.sendto(def_msg, addr)
#time.sleep(3)
data, addr = UDPSock.recvfrom(buf)
if data == 'done':
FILE.close()
break
FILE.write(data)
print "Receiving"
#time.sleep(3)
UDPSock.close()
# server program for nvt
from socket import *
import os, sys, time, glob
#import pygame
import stat
host = 'localhost'
port = 21567
buf = 1024
addr = (host, port)
print 'test server'
UDPSock = socket(AF_INET, SOCK_DGRAM)
UDPSock.bind(addr)
msg = "send txt file to all clients"
#FILE = open("cam.jpg", "r+")
FILE = open("dna.dat","r+")
sending_data = FILE.read()
FILE.close()
tmp_data = sending_data
while (1):
#UDPSock.listen(1)
#UDPSock.sendto(msg, addr)
#FILE = open("gen1000.dat","r+")
#sending_data = FILE.read()
#FILE.close()
#print 'client is at', addr
data, addr = UDPSock.recvfrom(buf)
#time.sleep(3)
print data
#msg = 'hello'
#
tmp, sending_data = sending_data[:buf-6], sending_data[buf-6:]
if len(tmp) < 1:
msg = 'done'
UDPSock.sendto(msg, addr)
print "finished"
sending_data = tmp_data
UDPSock.sendto(tmp, addr)
print "sending"
#time.sleep(3)
UDPSock.close()
UDP를 사용해야하는 이유가 있습니까? UDP가 무엇이고 어떻게 동작하는지 알고 계시길 바랍니다. http://en.wikipedia.org/wiki/User_Datagram_Protocol –