两个程序通过“网络”交互数据就使用socket,它只负责两件事:建立连接,传递数据。

所有的数据传输接收,必须都使用byte格式

1.简单实例:

#客户端
import socket client=socket.socket()
client.connect(("localhost",6969))
client.send(b"Hello World")
data_receive=client.recv(1024)
print("接收到的数据是:",data_receive)
client.close()
#服务器端
import socket server=socket.socket()
server.bind(("localhost",6969))
server.listen()
print("我要开始监听了")
conn,port=server.accept()
print("电话来了")
data=conn.recv(1024)
print("收到的数据是:",data)
conn.send(data.upper())
print("返回的数据是:",data.upper())
server.close()

运行结果:客户端

接收到的数据是: b'HELLO WORLD'

运行结果:服务器端

我要开始监听了
电话来了
收到的数据是: b'Hello World'
返回的数据是: b'HELLO WORLD'

2.实例2传中文:

#客户端
import socket client=socket.socket()
client.connect(("localhost",6969))
client.send("我要开始下载电影了a".encode("utf-8"))
data_receive=client.recv(1024)
print("接收到的数据是:",data_receive.decode("utf-8"))
client.close()
#服务器端
import socket server=socket.socket()
server.bind(("localhost",6969))
server.listen()
print("我要开始监听了")
conn,port=server.accept()
print("电话来了")
data=conn.recv(1024)
print("收到的数据是:",data.decode("utf-8"))
conn.send(data.upper())
server.close()
 我要开始监听了
电话来了
收到的数据是: 我要开始下载电影了a
接收到的数据是: 我要开始下载电影了A

3.实例-与一个客户端不停地通话,用到 while循环:

#客户端(发出去的内容是小写的,收到的回应是大写的。)
import socket
client=socket.socket()
#声明socket类型,同时生成socket连接对象;定义地址簇和协议类型(默认IPV4和TCP/IP)
client.connect(("localhost",6969)) #连接本机的6969端口
while True:
msg=input("请输入你的请求信息>>:")
client.send(msg.encode("utf-8"))
data=client.recv(1024) #1024个字节,接受服务器端的返回,recv默认是阻塞的。客户端一断开,conn.recv收到的就都是空数据。会陷入死循环。
print("recv:",data.decode())
client.close()
#服务器端
import socket
server=socket.socket()
server.bind(('localhost',6969)) #绑定要监听的端口
server.listen() #监听
print("我要开始等电话了")
conn,addr=server.accept()
print(conn,addr) #就是客户端连过来而在服务器端为其生成的一个连接实例。
print("电话来了")
while True:
data=conn.recv(1024)
print("recv:",data)
#conn.send("我是服务器端来的确认信息".encode("utf-8"))
conn.send(data.upper())
server.close()
请输入你的请求信息>>:1
recv: 1
请输入你的请求信息>>:2
recv: 2
请输入你的请求信息>>:3
recv: 3
请输入你的请求信息>>:4
recv: 4
请输入你的请求信息>>:
我要开始等电话了
<socket.socket fd=288, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 6969), raddr=('127.0.0.1', 49602)> ('127.0.0.1', 49602)
电话来了
recv: b'1'
recv: b'2'
recv: b'3'
recv: b'4'

4.实例-一个客户通话结束后,第二个客户接进来:

#客户端(发出去的内容是小写的,收到的回应是大写的。)
import socket
client=socket.socket()
#声明socket类型,同时生成socket连接对象;定义地址簇和协议类型(默认IPV4和TCP/IP)
client.connect(("localhost",6969)) #连接本机的6969端口
while True:
msg=input("请输入你的请求信息>>:").strip()
if len(msg)==0:
continue
client.send(msg.encode("utf-8"))
data=client.recv(1024) #1024个字节,接受服务器端的返回
print("recv:",data.decode())
client.close()
#服务器端
import socket
server=socket.socket()
server.bind(('localhost',6969)) #绑定要监听的端口
server.listen() #监听
print("我要开始等电话了")
while True:
conn,addr=server.accept()
print(conn,addr) #就是客户端连过来而在服务器端为其生成的一个连接实例。
print("电话来了")
while True:
data=conn.recv(1024)
print("recv:",data)
conn.send("我是服务器端来的确认信息".encode("utf-8"))
if not data:
print("Client has lost...")
break
conn.send(data.upper())
server.close()

Socket网络编程实例2的更多相关文章

  1. Socket网络编程实例1

    Socket: 对所有上层协议(TCP/IP,UDP等)的底层封装. 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 建立网络通信连接至少要一对端口号(so ...

  2. Python Socket,How to Create Socket Server? - 网络编程实例

    文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...

  3. Python Socket,How to Create Socket Cilent? - 网络编程实例

    文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...

  4. Socket网络编程(TCP/IP/端口/类)和实例

    Socket网络编程(TCP/IP/端口/类)和实例 原文:C# Socket网络编程精华篇 转自:微冷的雨 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次 ...

  5. Linux Socket 网络编程

    Linux下的网络编程指的是socket套接字编程,入门比较简单.在学校里学过一些皮毛,平时就是自学玩,没有见识过真正的socket编程大程序,比较遗憾.总感觉每次看的时候都有收获,但是每次看完了之后 ...

  6. python之Socket网络编程

    什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系.在数学上,网络是一种图,一般认为专指加权图.网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型.在 ...

  7. Python之路【第七篇】python基础 之socket网络编程

    本篇文章大部分借鉴 http://www.cnblogs.com/nulige/p/6235531.html python socket  网络编程 一.服务端和客户端 BS架构 (腾讯通软件:ser ...

  8. 项目总结——深入浅出socket网络编程

    前言: 为什么会有如题的概念呢,我想对于没有主动听说过socket网络编程的人来说读到题目可能就已经蒙头了,为了很好的让大家进入场景,首先说一下一个需要用到这点东西的业务需求. 首先大家应该明确的是s ...

  9. 循序渐进Socket网络编程(多客户端、信息共享、文件传输)

    循序渐进Socket网络编程(多客户端.信息共享.文件传输) 前言:在最近一个即将结束的项目中使用到了Socket编程,用于调用另一系统进行处理并返回数据.故把Socket的基础知识总结梳理一遍. 1 ...

随机推荐

  1. 北京Uber优步司机奖励政策(3月1日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  2. miniz库简介及使用

    miniz:Google开源库,它是单一的C源文件,紧缩/膨胀压缩库,使用zlib兼容API,ZIP归档读写,PNG写方式.关于miniz的更详细介绍可以参考:https://code.google. ...

  3. 相机imu外参标定

    1. 第一步初始化imu外参(可以从参数文档中读取,也可以计算出),VINS中处理如下: # Extrinsic parameter between IMU and Camera. estimate_ ...

  4. 分享一个 UiPath Studio 相关的公众号

    RPA 和 UiPath 方面的资料比较少,因此我们自己创建了一个公众号,专门用于传播 UiPath 相关的知识. 会定期发布 UiPath 学习相关的信息.是目前难得的 UiPath 中文资源. 公 ...

  5. selenium,unittest——驾照科目一网上答题自动化

    需求很简单,所有题目全选A,然后点提交出分,校验是否到达出分这步 遇到的坑有这几个,一个是assertIn哪个是校验哪个是文本要分清,还有code的编码统一到Unicode,最后就是xpath定位各个 ...

  6. Cannot assign requested address (connect failed)

    压测时,应用服务器报错:Cannot assign requested address (connect failed) 经检查,由于应用服务器,频繁发起http请求,由于每次连接都在很短的时间内结束 ...

  7. Shader-水流效果

    效果图:(贴图类似于泥石流) 代码: Shader "CookbookShaders/Chapter02/ScrollingUVs" { Properties { _MainTin ...

  8. HDU 2490 Parade(DPの单调队列)(2008 Asia Regional Beijing)

    Description Panagola, The Lord of city F likes to parade very much. He always inspects his city in h ...

  9. 2018-8-29安装Jitamin过程实录

    2018-8-29安装Jitamin过程实录 新建 模板 小书匠 欢迎走进zozo的学习之旅. 简介 安装 nginx + php + mysql 安装composer 安装Jitamin 简介 在考 ...

  10. c++反射概念-简单介绍

    C++ 反射机制的简单实现 C++并不支持反射机制,只能自己实现. 如果需要实现字字符串到函数到映射,一定要使用到函数指针. 简单实现反射机制,根据字符串来构造相应到类.主要有以下几点: (1) 可以 ...