0

私はネットワーキングに取り掛かったばかりで、pingで何かを試してみたかった

サーバーコード:

import socket

host = 'localhost'
port = 5050
backlog = 5
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
while 1:
    client, address = s.accept()
    data = client.recv(size)
    print "getting "+str(data)+" from "+ str(address)

クライアントコード

import socket
import time

host = 'localhost'
port = 5050
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,port))
while 1:
    s.send('PING')
    print "sending package"
    time.sleep(1)

今それは出力します:

getting PING from ('127.0.0.1', 56580)

1 秒ごとに PING を取得する必要がありますが、1 回だけです。

どうすればこれを修正できますか?

4

2 に答える 2

0

まあ、あなたは一度だけ読んでいます。client.recvサーバー上でループを呼び出します。

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
while True:
    client, address = s.accept()
    # TODO Use fork(), threading, or async I/O to for parallel processing
    while True: 
        data = client.recv(size)
        print "getting "+str(data)+" from "+ str(address)

または、ping ごとにソケットを作成します。

while True:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host,port))
    s.send('PING')
    print "sending package"
    time.sleep(1)
于 2012-09-08T19:49:30.133 に答える