首页 > 编程语言 > 详细

python2.7编写一个简单的回显客户端/服务器应用

时间:2016-01-28 17:15:11      阅读:244      评论:0      收藏:0      [点我收藏+]

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、客户端client.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

python2.7编写一个简单的回显客户端/服务器应用

原文:http://www.cnblogs.com/jsben/p/5165899.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!