0
  1. サーバーを開きます
  2. クライアントを開きます
  3. クライアントは「connectrequest」をサーバーに送信します
  4. サーバーは「connectrequest」を受信します
  5. サーバーは「接続済み」をクライアントに送信します
  6. クライアントはサーバーから「接続」されています
  7. クライアントプリント「接続済み」!
  8. サーバーがクラッシュし、理由がわかりません(エラーも表示されません)。

サーバ:

from socket import *;

iSocket = socket( AF_INET, SOCK_DGRAM );
iSocket.bind( ( "", 4325 ) );

while True:

    recv_data, addr = iSocket.recvfrom( 2048 );

    if addr[ 0 ] == "127.0.0.1":

        #stuff

    elif recv_data == "on":
        print "New connection:", addr[ 0 ];

    elif recv_data == "connectrequest":
        iSocket.sendto( "connected", addr );

クライアント:

import time;
import select;
from socket import *;

address = ( '192.168.0.101', 4325 );

iSocket = socket( AF_INET, SOCK_DGRAM );
iSocket.connect( address );

reconnect = 10;
last_reconnect = 0;
connected = False;

while connected == False:

    if last_reconnect <= int( time.time( ) ) + reconnect:
        print "Connecting...";
        iSocket.sendto( "connectrequest", address );

    data_available = select.select( [ iSocket ], [ ], [ ], 11 )

    if data_available[ 0 ]:
        recv_data, addr = iSocket.recvfrom( 2048 );

        if recv_data == "connected":
            connected = True;
            print "Connected!";

iSocket.sendto( "on", address );

while True:

    recv_data, addr = iSocket.recvfrom( 2048 );
    print recv_data, addr;
4

0 に答える 0