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_1.14_编写一个简单的回显客户端/服务器应用的更多相关文章

  1. Python网络编程——编写一个简单的回显客户端/服务器应用

    今天将python中socket模块的基本API学习完后,照着书上的实例编写一个套接字服务器和客户端.采用python3.5版本,在注释中会标明python2和python3的不同之处. 1.代码 ( ...

  2. python2.7_1.13_编写一个SNTP客户端

    1.pip install ntplib 2.思路:先创建一个NTPClient实例,然后在这个实例上调用request()方法,把NTP服务器的地址传入方法,向NTP服务器发起一个NTP请求,响应使 ...

  3. 编写一个简单的C++程序

    编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...

  4. 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小

    原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...

  5. 编写一个简单的Web Server

    编写一个简单的Web Server其实是轻而易举的.如果我们只是想托管一些HTML页面,我们可以这么实现: 在VS2013中创建一个C# 控制台程序 编写一个字符串扩展方法类,主要用于在URL中截取文 ...

  6. javascript编写一个简单的编译器(理解抽象语法树AST)

    javascript编写一个简单的编译器(理解抽象语法树AST) 编译器 是一种接收一段代码,然后把它转成一些其他一种机制.我们现在来做一个在一张纸上画出一条线,那么我们画出一条线需要定义的条件如下: ...

  7. Java入门篇(一)——如何编写一个简单的Java程序

    最近准备花费很长一段时间写一些关于Java的从入门到进阶再到项目开发的教程,希望对初学Java的朋友们有所帮助,更快的融入Java的学习之中. 主要内容包括JavaSE.JavaEE的基础知识以及如何 ...

  8. 用 Go 编写一个简单的 WebSocket 推送服务

    用 Go 编写一个简单的 WebSocket 推送服务 本文中代码可以在 github.com/alfred-zhong/wserver 获取. 背景 最近拿到需求要在网页上展示报警信息.以往报警信息 ...

  9. 用C语言编写一个简单的词法分析程序

    问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...

随机推荐

  1. CentOS 修改默认语言

    查看所有的locale语言 [root@centos6 ~]# locale -a ... ... ... ... xh_ZA xh_ZA.iso88591 xh_ZA.utf8 yi_US yi_U ...

  2. ORA-32001: 已请求写入 SPFILE, 但是在启动时未指定 SPFILE

    SQL> alter system set smtp_out_server='smtp.126.com' scope=both;alter system set smtp_out_server= ...

  3. windows下的mongodb下载安装

    1.首先从官网https://www.mongodb.org/下载mongodb的安装包,本人下载的是mongoDB3.2版本的.msi的文件,然后双击安装即可 2.点击next 3.compelte ...

  4. error C4996 The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name

    error C4996: 'strupr': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ co ...

  5. python two-dimensional array assignment initialize

    #if you want to initialize a 9*9 two-dimensional array [([""]*9) for i in range(9)] #cauti ...

  6. php 7 正式发版

    php 7 正式发版 php 在 2015年 12月 3 日 正式发布了 php7 以下是php7的新特性 性能是php5.6的2倍 显著的减少了内存的使用 抽象语法书 64位的支持 提高了异常层次 ...

  7. JavaWeb核心编程之(三.6)HttpServlet

    之前都是集成的Servlet真的太过于繁琐了, Servlet接口提供了一个实现类 为HttpServlet  只要实现doGet 和doPost方法就可以了 仍然以一个表单为例 新建一个web工程 ...

  8. AJAX获取JSON形式的数据

    test.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  9. js 中 setTimeout()的用法

    setTimeout()在js类中的使用方法   setTimeout (表达式,延时时间)setTimeout(表达式,交互时间)延时时间/交互时间是以豪秒为单位的(1000ms=1s) setTi ...

  10. Android学习笔记27:网格视图GridView的使用

    网格视图GridView的排列方式与矩阵类似,当屏幕上有很多元素(文字.图片或其他元素)需要按矩阵格式进行显示时,就可以使用GridView控件来实现. 本文将以一个具体的实例来说明如何使用GridV ...