编写一个套接字服务器和客户端,不管服务器从客户端收到什么输入,都会将其回显出来。我们要使用Python中的argparse模块,在命令行中指定TCP端口。服务器脚本和客户端脚本都要用到这个参数。
先来编写服务器。首先创建一个TCP套接字对象。然后设定启用重用地址,这样想运行多少次服务器就能运行多少次。把套接字绑定在本地设备的指定端口上。在监听阶段,把backlog参数传入listen()方法中,让服务器在队列中监听多个客户端。最后,等待客户端连接,向服务器发送一些数据。收到数据后,服务器会把数据回显给客户端。

import socket
import sys
import argparse
host = 'localhost'
data_payload = 2048
backlog = 5
def echo_server(port): 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 {} port {}".format(host, port))sock.bind(server_address) sock.listen(backlog) while True: print("Waiting to receive message from client")client, address = sock.accept() data = client.recv(data_payload) if data: print("Data: {}".format(data))client.send(data) print("sent {} bytes back to {}".format(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)

在客户端代码中,要创建一个客户端套接字,然后使用命令行参数中指定的端口连接服务器。客户端把消息Test message. This will be echoed发送给服务器之后,立即就会在几个数据片段中收到返回的消息。这里用到了两个try-except块,捕获交互过程中发生的任何异常。

import socket
import sys
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 = "Test message. This will be echoed" print("Sending {}".format(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.errno: print("Socket error: {}".format(str(socket.errno)))except Exception: print("Other exception: {}".format(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 echo_client(port)

简单的回显客户端/服务器应用相关推荐

  1. python 客户端_Python一个简单的通信程序(客户端 服务器)

    功能是从客户端向服务发送一个字符串, 服务器收到后将字符串重新发送给客户端,同时,在连接建立之后,服务器可以向客户端发送任意多的字符串 客户端: 10.248.27.23是我电脑的IP import ...

  2. python16进制字节序_第 1 章 套接字、IPv4和简单的客户端/服务器编程

    第 1 章 套接字.IPv4和简单的客户端/服务器编程 本章攻略: 打印设备名和IPv4地址 获取远程设备的IP地址 将IPv4地址转换成不同的格式 通过指定的端口和协议找到服务名 主机字节序和网络字 ...

  3. Python_套接字、IPv4和简单的客户端/服务器编程

    <Python网络编程攻略>学习笔记 TCP用主机的IP地址加上主机的端口号作为TCP连接的端点,这种端点叫做套接字(socket)或插口 获取远程设备的IP地址 import socke ...

  4. 一个简单的UDP回显服务器

    一个简单的UDP回显服务器 客户端给服务器发送一个字符串,服务器把这个字符串原封不动的返回(回显到服务器echo server) 相当于服务器开发当中的"hello world". ...

  5. 【Java 网络编程】网络通信原理、TCP、UDP 回显服务

    一.网络发展历史 互联网从何而来? 这要追溯到上个世纪 50 - 60 年代,当时正逢美苏争霸冷战,核武器给战争双方提供了足够的威慑力,想要保全自己,就要保证自己的反制手段是有效的. 如何保证能够反击 ...

  6. validate参数校验和数据回显

    服务端校验 校验理解 项目中,通常使用较多的是前段的校验,比如在页面中js校验.对于安全要求较高的建议在服务端进行校验. 服务端校验: 控制层controller:校验页面请求的参数的合法性.在服务端 ...

  7. php中,多维数组是什么意思,在PHP中回显多维数组

    我有一个多维数组,我试图找出如何简单地"回显"数组中的元素.数组的深度未知,因此可以深度嵌套. 对于下面的数组,正确的回显顺序为: This is a parent comment ...

  8. elementui select选中获取整个item对象以及回显

    问题描述: 常规的select选中若采用v-model绑定的参数进行获取,仅能获取到label值,获取不到整个item对象. 解决办法: 1. 设置select的 option的vule属性为 :va ...

  9. java回显怎么实现_Java实现简单的server/client回显功能

    Java实现简单的server/client回显功能 Socket是指在一个特定编程模型下,进程间通信链路的端点.因为这个特定编程模型的流行,Socket这个名字在其他领域得到了复用,包括Java叫技 ...

最新文章

  1. C#程序员的春天之从零开始学习unity3D游戏开发入门教程二(创建项目及基本面板介绍)...
  2. 大端和小端存储模式解析
  3. async await 的用法
  4. 域名解析到指定端口_南京课工场IT培训:搭建nginx虚拟主机——基于域名、端口和IP...
  5. 类成员函数可以返回该类的实例吗_关于类的理解
  6. MVVM设计模式和在WPF中的实现(四) 事件绑定
  7. 【POJ2752】Seek the Name, Seek the Fame(hash)
  8. phpQuery的用法
  9. 计算机内存与速度,内存容量与读写速度
  10. 使用Git上传本地项目到GitHub
  11. 蓝牙定位在各行业领域中的应用及蓝牙定位原理浅析-新导智能
  12. 免费数字证书申请(https)
  13. [转] Photoshop教程8000例
  14. Leetcode 1208. 尽可能使字符串相等(终于解决,晚安)
  15. 公历转农历linux C程序
  16. 做项目管理,不得不考的证书
  17. 【NGS分析工具】Sentieon软件常见问题列表(持续更新...)
  18. 第三方网站实现钉钉(DingTalk)扫码登陆(Vue+SpringBoot)
  19. [附源码]计算机毕业设计居家养老服务系统小程序Springboot程序
  20. 考题篇(6.2) 09 ❀ FortiGate ❀ Fortinet 网络安全专家 NSE 4

热门文章

  1. 计算机制图专业是什么,专业设计制图需要什么样的电脑?制图电脑配置要求 (全文)...
  2. linux c实现键盘模拟,C++模拟键盘按键的实例
  3. linux sort排序及取前几条数据
  4. 阿拉伯数字改为汉字的大写
  5. Anaconda Prompt 用法全集
  6. 阿里云VPC网络内网实例通过SNAT连接外网
  7. 得到app文稿导出_得到app的文稿怎么下载复制导出
  8. 用Python画论文折线图、曲线图?几个代码模板轻松搞定!
  9. 没有网服务器怎么打开网页,苹果手机没有浏览器怎么打开网页
  10. 电脑端微信如何清空聊天记录