一、将数据写在发送语句中【传统方式】

server端代码:

import socket
#服务器端将socket套接字赋给sock套接字
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#服务器端调用sock.setsockopt为这个socket对象设置值,包括(level,optname,value)
sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
#服务器调用sock.bind为这个socket对象绑定到一个地址上,它需要一个主机地址和端口组成的元组作为参数
sock.bind(('127.0.0.1',8000))
#服务器用sock.listen为这个socket开始TCP监听,参数可以为挂起的最大连接数量,该值至少为1,大部分程序设为5就可以
sock.listen(5)
#进行无限循环
while 1:#sock.accept被动接受TCP客户端的连接,等待连接的到来。cli_sock,cli_addr=sock.accept()#sock.recv()接受TCP数据,将cli_sock套接字接受的数据传递给rep嵌套字req=cli_sock.recv(4096)#cli_sock发送TCP数据,将string的数据发送到连接的套接字,返回值是要发送的字节数量cli_sock.send(b'hello world')#关闭套接字cli_sock.close()

client端代码:

import socket
#客户端将socket套接字赋给sock套接字
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#客户端调用sock.connect主动初始化服务器连接,参数为(hostname,port)
sock.connect(('127.0.0.1',8000))
#客户端调用sock.send向服务器发送数据
sock.send(b"GET/HTTP/1.1\r\nHost:127.0.0.1:8080\r\n\r\n")
#客户端使用套接字data代替sock.recv接受的数据值
data=sock.recv(4096)
#打印出来data
print(data)
#关闭套接字
sock.close()

运行演示:

首先运行启动服务器,再运行启动客户端,然后客户端与服务器建立连接,向服务器发送数据,然后接受服务器发送过来的字符数据b’hello world’。

二、将服务器和客户端封装起来【优化方式】

server端代码:

import socketphone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)phone.bind(('127.0.0.1',8081))
phone.listen(5)print('starting...')
while True:#链接循环conn,client_addr=phone.accept()print(client_addr)while True:#通信循环try:data=conn.recv(1024) #单位:bytes;# 1024代表最大接受1024个bytesprint("客户端的数据:",data)conn.send(data.upper())except ConnectionError:breakconn.close()
phone.close()

client端代码:

import socket
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.connect(('127.0.0.1',8081))while True:msg=input('>>').strip()if not msg:continuephone.send(msg.encode('utf-8'))data=phone.recv(1024)print(data.decode("utf-8"))phone.close()

运行演示:

先启动服务器,服务器输出“starting…” ,然后启动客户端,与服务器建立连接,然后在客户端可以输入消息,回车发送给客户端,客户端接收并显示出消息。

Python网络编程【客户端与服务器通信】相关推荐

  1. Python网络编程——客户端与服务端简单信息发送与接受

    python网络编程-服务端与客户端简单信息发送与接受 思考一下我们进行网络中信息通信都需要什么或者说需要具备什么条件才能进行网络通信? 首先我们需要知道给谁发送,也就是目标机是谁,然后我们需要知道对 ...

  2. 网络编程(客户端和服务器的编写)

    一.网络发展的历史 1.中国的网络发展大概在2000年左右开始兴起,越来越多的能联网的游戏出现了,局域网联网,广域网联网. 局域网与广域网没有一个,明确的限制的,(中国的网络可以说是广域网也可以说是一 ...

  3. java 高级网络编程_java高级网络编程—客户端与服务器

    [Java] 纯文本查看 复制代码package lesson_2017; import java.io.BufferedReader; import java.io.IOException; imp ...

  4. 【python网络编程】创建TCP/UDP服务器进行客户端/服务器间通信

    客户端/服务器网络编程介绍 套接字:通信端点 实例:客户端发送数据,接收服务器返回的时间戳 用Python 编写FTP 客户端程序 客户端/服务器网络编程介绍 软件服务器也运行在一块硬件之上,但是没有 ...

  5. python网络编程(1):客户端与网络编程简介

    python网络编程(1):客户端与网络编程简介 很多情况下,网络编程就是选择并使用一个已经支持所需网络操作的库的过程. 1.使用pygeocoder实现地址和经纬度的转换 通过pipenv创建虚拟环 ...

  6. Python 网络编程学习笔记(二)——DNS 域名解析客户端程序设计

    本博文介绍如何使用 Python 网络编程,设计并实现客户端的 DNS 域名解析及缓存服务. 1 基本概念 域名系统(DNS)是一个庞大的.全球的分布式数据库,,它主要用来把主机名转换成 IP 地址, ...

  7. python网络编程-异常处理-异常捕获-抛出异常-断言-自定义异常-UDP通信-socketserver模块应用-03

    python网络编程-异常处理-异常捕获-抛出异常-断言-自定义异常-UDP通信-socketserver模块应用-03 参考文章: (1)python网络编程-异常处理-异常捕获-抛出异常-断言-自 ...

  8. Exchange邮件系统客户端与服务器通信常用网络端口

    Exchange邮件系统:客户端与服务器通信常用网络端口 序号 用途 端口 1 未加密的web连接: •互联网日历发布 •Outlook on the web(重定向到443/TCP) •自动发现(4 ...

  9. python编程入门指南怎么样-学习python网络编程怎么入门

    第一部分底层网络学习 Python提供了访问底层操作系统Socket接口的全部方法,需要的时候这些接口可以提供灵活而强有力的功能. (1)基本客户端操作 在<python 网络编程基础>一 ...

  10. python网络编程(苦肝一夜,近万字)

    文章目录 一.TCP/IP简介 二.网络设计模块 1.Socket简介 2.python中的socket模块,使用该模块建立服务器需要6个步骤. 1.创建socket对象. 2.将socket绑定(指 ...

最新文章

  1. SAP MM 公司间退货STO的交货单PGI报错 -Purchase order 4500000773 does not contain items for a stock transfer-
  2. html获取文本框的值,如何获取输入框的内容
  3. adb devices 找不到设备的解决方法,亲测,超管用
  4. 【Android FFMPEG 开发】Android 中执行 FFMPEG 指令 ( 集成 mobile-ffmpeg 框架 | 完整代码示例 )
  5. V神又在操心区块链技术落地,以太坊大涨!
  6. opencv学习笔记19:图像金字塔和图像拉普拉斯金字塔 (用于图像放大和缩小)
  7. 排序算法 -- 待增加
  8. 测试通用串行总线控制器好坏软件,通用串行总线控制器出现叹号是什么情况?怎么解决?...
  9. Analysis of variance(ANOVA)
  10. typora html代码无效,Typora优化-适合不懂CSS代码的小白
  11. unity3d 自动变化大小_自动做游戏(1),自动生成人物侧面图
  12. 记住三句话,就会用双拼(韵母键快速记忆口诀)
  13. SPSS典型相关分析(Canonical Correlation Analysis)案例(SPSS25最新版)
  14. 成功解决win7不能重装ie9的问题(重整版)
  15. 分类刷题:A1008乘电梯
  16. 屏幕开发学习 -- 迪文串口屏
  17. linux共享实体机硬盘,实现目录共享
  18. Kahan summation
  19. mvc 从客户端 中检测到有潜在危险的 Request 值
  20. JAVA String.format详解

热门文章

  1. 模糊逻辑学习--建立Mamdani系统(GUI)
  2. Spring Boot/Cloud 背后豪华的研发团队
  3. css鼠标拖拉卡顿_JavaScript实现元素拖动性能优化
  4. java数据文本格式转换_SpringMVC中Json数据格式转换
  5. MySQL Config--参数system_time_zone和参数time_zone
  6. vs2017 Visual Studio 离线安装方法
  7. Char05 Ansible 最佳实践
  8. 【转】Pro Android学习笔记(二五):用户界面和控制(13):LinearLayout和TableLayout...
  9. 打通版微社区(1):PHP环境部署 for DZX3.2
  10. 二十、Java基础--------IO流之其他对象