python2.7_1.14_単純なエコークライアント/サーバアプリケーションの作成

5522 ワード

1、サービス側server.py
# -*- coding: utf-8 -*-

import socket
import argparse

host = 'localhost'
data_payload = 2048
backlog = 5


def echo_server(port):
    #     TCP   
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    #        
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    #         
    server_address = (host, port)
    print 'Starting up echo server on %s port %s' % server_address
    sock.bind(server_address)
    #      ,backlog            
    sock.listen(backlog)
    while True:
        print 'Waiting to receive message from client'
        client, address = sock.accept()
        data = client.recv(data_payload)
        if data:
            print 'Receive Data:%s' % data

            #         
            data = '<worked>'+data+'</worked>'
            client.send(data)
            print 'Sent %s bytes back to %s' % (data, address)
        #     
        client.close()

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Socket Server Example')
    parser.add_argument('--port', action='store', dest='port', type=int, required=True)
    given_args = parser.parse_args()
    port = given_args.port
    echo_server(port)

 
2、クライアントクライアントpy
# -*- coding: utf-8 -*-
import socket
import argparse

host = 'localhost'


def echo_client(port):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_address = (host, port)
    print 'Connecting to %s port %s' % server_address
    sock.connect(server_address)

    try:
        message = '       '
        #     CMD      GBK  
        message = message.decode('utf-8').encode('gbk')
        print 'Sending: %s' % message
        sock.sendall(message)

        amount_received = 0
        amount_expected = len(message)

        while amount_received < amount_expected:
            data = sock.recv(16)
            amount_received += len(data)
            print 'Received:%s' % data
    except socket.error, e:
        print 'Socket error: %s' % str(e)
    except Exception, e:
        print 'Other error: %s' % str(e)
    finally:
        print 'Closing connection to the server'
        sock.close()

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Socket Server Example')
    parser.add_argument('--port', action='store', dest='port', type=int, required=True)
    given_args = parser.parse_args()
    port = given_args.port
    print port
    echo_client(port)

 
3.運転
python server.py --port=9900
python client.py --port=9900