简单回显客户端服务器应用


服务器端:

import argparse
import socket
import sys


host = "localhost"
data_payload = 2048
backlog = 5


def echo_server( port ):
    sock = socket.socket( family = socket.AF_INET,
                          type = socket.SOCK_STREAM )
    sock.setsockopt( socket.SOL_SOCKET,
                     socket.SO_REUSEADDR,
                     1 )
    server_addr = ( host, port )
    print "server: %s, port: %s" % server_addr
    sock.bind( server_addr )
    sock.listen( backlog )
    while True:
        print "Waiting from client."
        client, addr = sock.accept()
        data = client.recv( data_payload )
        if data:
            print "Data: %s" % data
            client.send( data )
            print "Sent %s bytes back to %s" % ( data, addr )
        client.close()


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument( "--port",
                         action = "store",
                         dest = "port",
                         type = int,
                         required = True )
    args = parser.parse_args()
    port = args.port
    echo_server( port )

客户端:

import socket
import sys
import argparse


host = "localhost"


def echo_client( port ):
    sock = socket.socket( family = socket.AF_INET,
                          type = socket.SOCK_STREAM )
    server_addr = ( host, port )
    print "Connecting to %s port %s" % server_addr
    sock.connect( server_addr )
 
    try:
        msg = "Test message. This will be echoed."
        print "Sending %s" % msg
        sock.sendall( msg )
        amount_received = 0
        amount_excepted = len( msg )
        while amount_received < amount_excepted:            
            data = sock.recv( 16 )
            print "==" * 20
            amount_received += len( data )
            print "Received: %s" % data
    except socket.errno, e:
        print "Socket error: %s" % str( e )
    except Exception, e:
        print "Other exception: %s" % str( e )
    finally:
        print "Closing connection"
        sock.close()


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument( "--port",
                         action = "store",
                         dest = "port",
                         type = int,
                         required = True )
    args = parser.parse_args()
    port = args.port
    echo_client( port )
    



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值