Socket网络编程实例1
Socket: 对所有上层协议(TCP/IP,UDP等)的底层封装。
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
建立网络通信连接至少要一对端口号(socket)。
协议类型又叫地址簇
socket实例,分别写在两个.py里面,客户端发出去的内容是小写的,接收到的内容是大写的。
运行的时候,先运行server,再运行client端。
#服务器端
import socket
server=socket.socket()
server.bind(('localhost',6969)) #绑定要监听哪个IP地址和端口
server.listen() #开始监听
print("我要开始等电话了")
conn,addr=server.accept() #每进来一个链接,服务器端都会为那个链接生成一个实例。阻塞
print(conn,addr) #就是客户端连过来而在服务器端为其生成的一个连接实例。
print("电话来了")
data=conn.recv(1024) #从客户端接收数据的大小。最大8192.如果客户端没有传回来数据,则会一直阻塞到这里。
print("recv:",data)
conn.send(data.upper())
server.close()
客户端一断开,conn.recv收到的就都是空数据了,就会陷入死循环。
#客户端
#(发出去的内容是小写的,收到的回应是大写的。)
import socket client=socket.socket() #声明socket类型,同时生成socket连接对象;定义地址簇和协议类型(默认IPV4和TCP/IP) client.connect(("localhost",6969)) #连接本机的6969端口 client.send(b"hello server, I am client") data=client.recv(1024) #1024个字节,接受服务器端的返回 print("recv:",data) client.close()
服务器端的运行结果:
我要开始等电话了
<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', 50703)> ('127.0.0.1', 50703)
电话来了
recv: b'hello server, I am client'
客户端的运行结果:
recv: b'HELLO SERVER, I AM CLIENT'
2.所有的来往数据必须是byte类型的。
#服务器端
import socket
server=socket.socket()
server.bind(('localhost',6969)) #绑定要监听的端口
server.listen() #监听
print("我要开始等电话了")
conn,addr=server.accept()
print(conn,addr) #就是客户端连过来而在服务器端为其生成的一个连接实例。
print("电话来了")
data=conn.recv(1024)
print("recv:",data)
conn.send("我是服务器端来的确认信息".encode("utf-8"))
#conn.send(data.upper())
server.close()
#客户端(发出去的内容是小写的,收到的回应是大写的。)
import socket
client=socket.socket()
#声明socket类型,同时生成socket连接对象;定义地址簇和协议类型(默认IPV4和TCP/IP)
client.connect(("localhost",6969)) #连接本机的6969端口
client.send("我要准备下载电影a".encode("utf-8"))
data=client.recv(1024) #1024个字节,接受服务器端的返回
print("recv:",data.decode())
client.close()
Socket网络编程实例1的更多相关文章
- Socket网络编程实例2
两个程序通过“网络”交互数据就使用socket,它只负责两件事:建立连接,传递数据. 所有的数据传输接收,必须都使用byte格式 1.简单实例: #客户端 import socket client=s ...
- Python Socket,How to Create Socket Server? - 网络编程实例
文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...
- Python Socket,How to Create Socket Cilent? - 网络编程实例
文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...
- Socket网络编程(TCP/IP/端口/类)和实例
Socket网络编程(TCP/IP/端口/类)和实例 原文:C# Socket网络编程精华篇 转自:微冷的雨 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次 ...
- Linux Socket 网络编程
Linux下的网络编程指的是socket套接字编程,入门比较简单.在学校里学过一些皮毛,平时就是自学玩,没有见识过真正的socket编程大程序,比较遗憾.总感觉每次看的时候都有收获,但是每次看完了之后 ...
- python之Socket网络编程
什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系.在数学上,网络是一种图,一般认为专指加权图.网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型.在 ...
- Python之路【第七篇】python基础 之socket网络编程
本篇文章大部分借鉴 http://www.cnblogs.com/nulige/p/6235531.html python socket 网络编程 一.服务端和客户端 BS架构 (腾讯通软件:ser ...
- 项目总结——深入浅出socket网络编程
前言: 为什么会有如题的概念呢,我想对于没有主动听说过socket网络编程的人来说读到题目可能就已经蒙头了,为了很好的让大家进入场景,首先说一下一个需要用到这点东西的业务需求. 首先大家应该明确的是s ...
- 循序渐进Socket网络编程(多客户端、信息共享、文件传输)
循序渐进Socket网络编程(多客户端.信息共享.文件传输) 前言:在最近一个即将结束的项目中使用到了Socket编程,用于调用另一系统进行处理并返回数据.故把Socket的基础知识总结梳理一遍. 1 ...
随机推荐
- sphinx生成cakephp文档
cakephp的文档是用一个叫sphinx程序生成的 这个程序是python写的,所以我们要用sphinx本机必须先装python. 编译过程在Ubuntu下进行,默认Ubuntu已经安装了pytho ...
- letsencrypt证书-管理工具certbot
目录 1. 安装certbot 2. certbot 介绍 3. 插件的具体使用 3.1 webroot 3.2 standalone 3.3 DNS plugins 3.4 manual 4. 证书 ...
- 如何实现最佳的跨平台游戏体验?Unity成亮解密实时渲染
7月31日,2018云创大会游戏论坛在杭州国际博览中心103B圆满举行.本场游戏论坛聚焦探讨了可能对游戏行业发展有重大推动的新技术.新实践,如AR.区块链.安全.大数据等. Unity大中华区技术经理 ...
- Cannot assign requested address (connect failed)
压测时,应用服务器报错:Cannot assign requested address (connect failed) 经检查,由于应用服务器,频繁发起http请求,由于每次连接都在很短的时间内结束 ...
- unity初探之黑暗之光(2)
unity初探之黑暗之光(2) 一.设置角色跟随鼠标点击移动 思路:使用charactercollider的SimpleMove方法来控制角色的移动.通过摄像机的射线投射到地面,通过屏幕上的一个点也就 ...
- Java开发工程师(Web方向) - 02.Servlet技术 - 第4章.JSP
第4章--JSP JSP JSP(Java Server Pages) - 中文名:Java服务器页面 动态网页技术标准 JSP = Html + Java + JSP tags 在服务器端执行,返回 ...
- leetcode-全排列详解(回溯算法)
全排列 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2 ...
- LeeCode第一次刷题(两数相加)
题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组 ...
- [模板]非递归线段树(zkw的变异版本)
类似于zkw,但空间只用两倍,zkw要4倍. 链接 可以下传标记,打熟后很好码. #include <set> #include <cmath> #include <cs ...
- Python入门(4)
一.while循环 有时候,你可能需要计算机来帮重复做一件事,这时就需要循环. while condition: statements (else: statements ) 当condition条件 ...