python_112_网络编程 Socket编程
实例1:客户端发小写英文,服务器端返回给客户端大写英文(仅支持一次接受发送)
服务器端:
- #服务器端(先于客户端运行)
- import socket
- server=socket.socket()
- server.bind(('localhost', 6969))#绑定要监听的端口,只能接受一个参数
- server.listen()#监听
- print('我要开始等电话了')
- conn,addr=server.accept()#等电话打进来 conn:连接标记 addr:对方的地址
- #conn就是客户端连过来而在服务器端为其生成的一个连接实例
- print('conn:',conn)
- print('addr:',addr)
- print('电话来了')
- data=conn.recv(1024)#接受数据 数据大小最好<=8192 recv默认是阻塞的
- print('recv',data)
- conn.send(data.upper())#返回一个值
- server.close()
客户端:
- #客户端
- import socket
- client=socket.socket()#声明协议(socket)类型,同时生成socket连接对象
- client.connect(('localhost',6969))#连接,只能接受一个参数
- client.send(b'hello world')#发送数据 注:python3中只能发byte类型,python2可以发字符串,byte(字节)类型
- # 注:byte类型只能接受ascall码数据类型
- # client.send('我要下载aaa片'.encode())#发送中文要这样写(英文也没问题)
- data=client.recv(1024)#接受服务器端的返回,可以指定接受大小 这里我指定的是1024个字节
- print('recv:',data)
- # print('recv:',data.decode())#接受中文要这样写(英文也没问题)
- client.close()
实例2:重复接受与发送(linux系统上操作最合适)
服务器端:
- import socket
- import os
- sever=socket.socket()
- sever.bind(('localhost',6969))
- sever.listen(5)#5可以更换别的数字,这里指的是可以挂起5个客户端连接(异步通信时可以懂得),默认写5个
- print('我要开始等电话了')
- while True:
- coon, addr = sever.accept()
- print('coon:', coon)
- print('addr:', addr)
- while True:
- data=coon.recv(10240)
- print('recv',data)
- if not data:
- print('client has lost')
- break
- # res = os.popen(data).read() # 获取执行结果,并执行命令(将socket模拟ssh客户端)
- # coon.send(res)#将send替换为sendall,表示循环发送send
- coon.send(data.upper())
- sever.close()
客户端:
- import socket
- client=socket.socket()
- client.connect(('localhost',6969))
- while True:
- msg=input('>>:').strip()#注意发送不了空的,所以要用if语句
- if len(msg)==0:continue
- client.send(msg.encode('utf-8'))
- data=client.recv(1024)
- print(data.decode())
- client.close()
python_112_网络编程 Socket编程的更多相关文章
- python网络编程-socket编程
一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...
- Day8 - Python网络编程 Socket编程
Python之路,Day8 - Socket编程进阶 本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...
- 网络编程——socket编程
一.客户端/服务端架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网企业处处是C/S架构 C/S架构与socket的关系:学习socket就是为了完成C/S架构的开发 二.OSI七层 一个 ...
- Day10 Python网络编程 Socket编程
一.客户端/服务器架构 1.C/S架构,包括: 1.硬件C/S架构(打印机) 2.软件C/S架构(web服务)[QQ,SSH,MySQL,FTP] 2.C/S架构与socket的关系: 我们学习soc ...
- Python的网络编程 Socket编程
Socket是进程间通信的一种方式,与其他进程间通信的一个主要不同是:能实现不同主机间的进程间通信,网络上各种各样的服务大多都是基于Socket来完成通信的,要解决网络上两台主机间的通信问题,首先要唯 ...
- HUST-计算机网络实验-socket编程
随笔---HUST计网实验:socket编程 博主大三在读,第一次写随笔,水平有限,就当记录一下学习的过程,顺便面试前复习项目的时候看看. 实验要求: 编写一个 Web 服务器软件,要求如下: 基本要 ...
- python网络编程socket编程(TCP、UDP客户端服务器)
摘录 python核心编程 使用socket()模块函数创建套接字——通信端点 >>> from socket import * >>> tcpSock = soc ...
- 网络编程----------SOCKET编程实现简单的TCP协议
首先我们须要大致了解TCP的几点知识: 1.TCP的特点:面向连接的可靠性传输 2.TCP的三次握手建立连接和四次挥手释放连接.但为什么TCP要三次握手建立连接呢? 答:由于两次握手无法保证可靠性.若 ...
- 网络编程 socket编程 - Asyncsocke
简单的聊天程序:http://blog.csdn.net/chang6520/article/details/7967662 iPhone的标准推荐是CFNetwork 库编程,其封装好的开源库是 c ...
随机推荐
- git 回退到服务器版本操作
git fetch git reset orgin master --hard git pull
- AttributeCollection.Add(String, String) Method
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans ...
- Educational Codeforces Round 20 C(math)
題目鏈接: http://codeforces.com/problemset/problem/803/C 題意: 給出兩個數n, k, 將n拆分成k個數的和,要求這k個數是嚴格遞增的,並且這k個數的g ...
- SpiderMonkey 入门学习(一)
spidermonkey 源码下载:http://ftp.mozilla.org/pub/mozilla.org/js/ 测试系统 Ubuntu 12.04, js 1.7.0, js 解压在/opt ...
- P1290-关灯
描述 Description 宁智贤得到了一份有趣而高薪的工作.每天早晨她必须关掉她所在村庄的街灯.所有的街灯都被设置在一条直路的同一侧.宁智贤每晚到早晨5点钟都在晚会上,然后她开始关灯.开始时,她站 ...
- 第二篇 Nosql讲解之windows下memcache的安装(一)
memcached基本概念 1.Memcached是danga的一个项目,最早是LiveJournal服务的,最初为了加速LiveJournal访问速度而开发的,后来被很多大型的网站采用. 官方网站: ...
- python selenium模块调用浏览器的时候出错
python selenium模块使用出错,这个怎么改 因为不同版本更新不同步问题,浏览器都要另外下一个驱动.
- lucene原理及java实现
https://blog.csdn.net/liuhaiabc/article/details/52346493 https://blog.csdn.net/yang307511977/article ...
- android videoView 加载等待
final Handler handler = new Handler(); Runnable runnable = new Runnable() { public void run() { int ...
- swiper 解决动态加载数据滑动失效的问题
两种解决方法 第一种解决办法: success:function(result){ var resultdata =eval("("+result+")"); ...