网络通信_socket
socket又称套接字
使用server实现循环通信 代码如下
import socket
server = socket.socket()
server.bind(('192.168.16.33',))
server.listen()
while :
coon,addr = server.accept()
while :
ret = coon.recv().decode('utf-8')
print(ret)
msg = input('内容:').encode('utf-8')
coon.send(msg)
coon.close() server.close()
客户端如下
import socket
client = socket.socket()
client.connect(('192.168.16.33',))
while :
msg = input('>>>')
client.send(msg.encode('utf-8'))
ret = client.recv().decode('utf-8')
print(ret)
client.close()
使用socketserver可以实现并发通信
import socketserver
class MY_server(socketserver.BaseRequestHandler):
def handle(self):
ret = self.request.recv().decode('utf-8')
print(ret) if __name__ == '__main__':
ip = ('127.0.0.1',)
server = socketserver.ThreadingTCPServer(ip,MY_server)
使用socket实现通信效果很容易造成黏包现象
产生黏包现象需要用struct和josn序列化的方式来解决,
import struct
import subprocess
import socket
server = socket.socket()
server.bind(('127.0.0.1',))
server.listen()
coon,addr = server.accept()
cmd = coon.recv().decode('utf-8')
print(cmd)
obj = subprocess.Popen(cmd,shell= True,stderr=subprocess.PIPE,stdout=subprocess.PIPE)
right_obj = obj.stdout.read()
error_obj = obj.stderr.read()
date_beyes = len(right_obj + error_obj)
print(date_beyes)
struct_date_beyes = struct.pack('i',date_beyes)
print(struct_date_beyes)
coon.send(struct_date_beyes)
coon.send(right_obj +error_obj)
import socket
import struct
client = socket.socket()
client.connect(('127.0.0.1',))
cmd = input('>>>').encode('utf-8')
client.send(cmd)
beyes_struct_len = client.recv()
print(beyes_struct_len)
beyes_struct_ = struct.unpack('i',beyes_struct_len)[]
date = b''
while len(date) < beyes_struct_:
form_date = client.recv()
date += form_date
print(date.decode('gbk'))
上图是解决黏包现象的客户端和服务端代码
网络通信_socket的更多相关文章
- ZeroMQ实例-使用ZMQ(ZeroMQ)进行局域网内网络通信
		本文内容摘要:1)安装zeromq.2)实例说明使用zmq进行网络间的消息发送和接收 首先在机器中安装zmq库 步骤如下: 1)下载zeromq的源代码,ZeroMQ的官方网址:http://zero ... 
- 基础笔记12(socket,url网络通信)
		进一步深入socket 1.网络通信条件: .IP地址,可用主机名. .传输数据时将不用的应用程序通过数字标识区分开来,这种标识称为逻辑端口,也称端口.(0-65535端口,一般系统预留0-1024) ... 
- Windows Store App 网络通信 HttpWebRequest
		如果希望更好地控制HTTP请求,可以使用System.Net类库中的HttpWebRequest类,该类对HTTP协议进行了完整的封装,并且提供了很多对HTTP协议中的 Header.Content和 ... 
- socket网络通信
		1.socket通常也称作"套接字",用于描述IP地址和端口.在internet上的主机一般运行了多个服务软件,同时提供几种服务,每种服务都打开一个socket,并绑定到一个端口上 ... 
- 20145316&20145229实验五:网络通信
		20145316&20145229实验五:网络通信 结对伙伴:20145316 博客链接:http://www.cnblogs.com/xxy745214935/p/6130897.html 
- 网络通信之Socket与LocalSocket的比较
		Socket与LocalSocket都可以实现网络通信,两个有什么区别呢? LocalSocket其通信方式与Socket差不多,只是LocalSocket没有跨越网络边界. 于是,思考到一个问题:a ... 
- Android 网络通信API的选择和实现实例
		Android开发网络通信一开始的时候使用的是AsyncTask封装HttpClient,没有使用原生的HttpURLConnection就跳到了Volley,随着OkHttp的流行又开始迁移到OkH ... 
- java 25 - 2 网络编程之 网络通信三要素
		网络通信三要素 IP地址: InetAddress 网络中设备的标识,不易记忆,可用主机名(计算机的标识号) 端口号: 用于标识进程的逻辑地址,不同进程的标识(正在运行的软件的标识号) 传输协议: 通 ... 
- TCP/UDP,SOCKET网络通信,C++/Java实现
		趁这两天没事干,就把网络通信这一块搞一搞,C/S方面的了解一下,很重要! TCP Server/Client 
随机推荐
- [Luogu2365]任务安排(斜率优化)
			[Luogu2365]任务安排 题目描述 N个任务排成一个序列在一台机器上等待完成(顺序不得改变),这N个任务被分成若干批,每批包含相邻的若干任务.从时刻0开始,这些任务被分批加工,第i个任务单独完成 ... 
- Kotlin——关于字符串(String)常用操作汇总
			在前面讲解Kotlin数据类型的时候,提到了字符串类型,当然关于其定义在前面的章节中已经讲解过了.对Kotlin中的数据类型不清楚的同学.请参考Kotlin——初级篇(三):数据类型详解这篇文章. 在 ... 
- 【LeetCode】并查集 union-find(共16题)
			链接:https://leetcode.com/tag/union-find/ [128]Longest Consecutive Sequence (2018年11月22日,开始解决hard题) 给 ... 
- hadoop+spark集群搭建
			1.选取三台服务器(CentOS系统64位) 114.55.246.88 主节点 114.55.246.77 从节点 114.55.246.93 从节点 之后的操作如果是用普通用户操作的话也必须知道r ... 
- Go的学习  sort
			1.排序操作主要都在 sort包中,导入就可以使用了 2.sort.Ints对整数进行排序 package main; import ( "fmt" "sort" ... 
- SpringBoot+Shiro学习(七):Filter过滤器管理
			SpringBoot+Shiro学习(七):Filter过滤器管理 Hiwayz 关注 0.5 2018.09.06 19:09* 字数 1070 阅读 5922评论 1喜欢 20 先从我们写的一个 ... 
- SpringBoot---监控与管理actuator
			1.概述 SpringBoot在Start POMS中提供了一个特殊依赖模块spring-boot-starter-actuator: 引入spring-boot-starter-actuator模块 ... 
- toj 4602 松鼠聚会
			题目: 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以用一个点x,y表示,两个点的距离定义为:点( ... 
- Python基础教程(020)--集成开发环境IDE简介--Pycharm
			前言 学会掌握Pycharm工具 内容 集成了开发软件需要的所有工具 1,图形用户界面 2,代码编译器(支持代码补全,自动缩进) 3,编译器,解释器 4,调试器(断点,单步执行) Pycharm介绍 ... 
- basic play
			[root@wen ~]# w 19:01:27 up 1 day, 7:06, 3 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN ... 
