基于socket构造c/s 架构软件
1、socket作用
socket层介于应用层和传输层之间,它起着连接应用层和传输层的功能,同时它能连接应用层和网络层。
socket把复杂的tcp/ip协议隐藏在socket接口后面,对用户来说,一组简单的接口就是全部,让socket组织数据,以符合指定的协议。
socket= IP + port +tcp(udp)
应用层可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,
实现数据传输的并发服务。
2、基于socket构造C/S
服务端:
步骤
(1)明确网络通信种类和协议;(2)固定IP和端口;(3)建立半连接池
(4)等待客户端运行,建立双向链接,(5)收发消息;(6)断开链接,(7)关闭服务端
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #网络通信种类,tcp 协议 流式协议
print(phone)
phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #重新用端口
# 本地回环地址,用于测试,只能自己访问
phone.bind(('127.0.0.1',8080)) #固定IP 端口
phone.listen(5) #半连接池 #等待消息
print('start..')
while True :
conn,client_addr=phone.accept() #(三次握手建立双向链接,(客户端的IP,端口)
print('链接成功') #客户端运行,服务端打印此信息
print(client_addr)
#通信
while True :
try:
data=conn.recv(1024) #最大接受的字节数,没有数据会在原地一直等待收,即发送者发送的数据必须大于0bytes
if len(data)== 0: break #在客户端单方面断开链接,服务端出现收空数据的情况
conn.send(data.upper()) #发消息
except ConnectionResetError : #win系统针对于解决客户端不发信息,服务端报错问题
break
conn.close()
phone.close() 客户端: 步骤:
(1)确认网络通信类型和协议 (2)指定服务端的IP和端口 (3)发收消息(4)关闭
phone = socket .socket (socket .AF_INET ,socket .SOCK_STREAM )
print(phone) phone.connect(('127.0.0.1',8080)) #指定服务端的IP和端口
while True :
msg = input('<<<')
if len(msg) == 0: continue #避免用户发空的情况
phone.send(bytes(msg,encoding= 'utf-8')) #传输二进制
data = phone.recv(1024) #收消息
print(data) phone.close()
基于socket构造c/s 架构软件的更多相关文章
- 基于Socket网络编程
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a2011480169/article/details/73602708 博客核心内容: 1.Sock ...
- 基于Socket客户端局域网或广域网内共享同一短信猫收发短信的开发解决方案
可使同一网络(局域网或广域网)内众多客户端,共享一个短信猫设备短信服务器进行短信收发,短信服务器具备对客户端的管理功能. 下面是某市建设银行采用本短信二次开发平台时实施的系统方案图: 在该方案中,考虑 ...
- Android 基于Socket的聊天应用(二)
很久没写BLOG了,之前在写Android聊天室的时候答应过要写一个客户(好友)之间的聊天demo,Android 基于Socket的聊天室已经实现了通过Socket广播形式的通信功能. 以下是我写的 ...
- 与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室
原文:与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phon ...
- C#中级-从零打造基于Socket在线升级模块
一.前言 前段时间一直在折腾基于Socket的产品在线升级模块.之前我曾写过基于.Net Remoting的.基于WCF的在线升级功能,由于并发量较小及当时代码经验的不足一直没有实际应用. ...
- 基于 Docker 的微服务架构实践
本文来自作者 未闻 在 GitChat 分享的{基于 Docker 的微服务架构实践} 前言 基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 D ...
- 配置percona mysql server 5.7基于gtid主主复制架构
配置mysql基于gtid主主复制架构 环境: 操作系统 centos7. x86_64 mysql版本:Percona-Server-- 测试环境: node1 10.11.0.210 node2 ...
- 基于GTK+3 开发远程控制管理软件(C语言实现)系列 一 开篇
近期趁公司没项目来,想学习一下C和GTK+3 ,顺道再学习一下Linux下有关网络编程方面的知识. 一.学习知识: 1.C基本语法 2.GTK+3 API学习 GUI相关知识学习 3.Glade使用及 ...
- 【Socket】从零打造基于Socket在线升级模块
一.前言 前段时间一直在折腾基于Socket的产品在线升级模块.之前我曾写过基于.Net Remoting的.基于WCF的在线升级功能,由于并发量较小及当时代码经验的不足一直没有实际应用. ...
随机推荐
- python 内置数据类型之数字
目录: 1.2. 数字 1.2.1. 数字类型 1.2.2. 浮点数 1.2.3. 进制记数 1.2.4. 设置小数精度 1.2.5. 分数 1.2.6. 除法 1.2 数字 1.2.1 数字类型 ...
- ActiveSync中的http内容组织
1. POST Request 数据格式 Request-line Request-headers CR/LF Request Body Request-line POST <URI> H ...
- 小甲鱼python基础教程飞机大战源码及素材
百度了半天小甲鱼python飞机大战的源码和素材,搜出一堆不知道是什么玩意儿的玩意儿. 最终还是自己对着视频一行行代码敲出来. 需要的同学点下面的链接自取. 下载
- Spring Boot JPA的Column Table 注解命名字段无效
@Table(name = "OrderInfo") @Entity public class OrderInfo { @Id @GeneratedValue private Lo ...
- nginx 域名泛解析
部分应用场景下要求服务器根据客户输入的二级域名地址自动访问不同的页面,比如一个服务器放置了不同的业务,商城.官网等多个业务,又不想一个个配置server, 网站目录结构入戏: html 网站根目录 m ...
- jQuery中live函数的替代-【jQuery】
在老版本的jQuery中,当需要对页面上某个由ajax加载的某片段的页面内容响应事件时,可以使用live函数来响应其事件,比如: $('a').live('click', function() { b ...
- Office 2010 word无法创建工作文件 请检查临时环境变量 的解决办法
Office 2010 word无法创建工作文件 请检查临时环境变量 的解决办法 http://hi.baidu.com/netshen/item/207fd935d452e0e9df2221c9 如 ...
- centos环境gcc版本升级
今天项目需要做node.js项目的性能测试,通过在centos上搭建nodejs环境 安装过程中提示:
- Flink--本地执行和集群执行
本地执行 1:local环境 LocalEnvironment是Flink程序本地执行的句柄.用它在本地JVM中运行程序 - 独立运行或嵌入其他程序中. 本地环境通过该方法实例化ExecutionEn ...
- Codeforces 196E Opening Portals MST (看题解)
Opening Portals 我们先考虑如果所有点都是特殊点, 那么就是对整个图求个MST. 想在如果不是所有点是特殊点的话, 我们能不能也 转换成求MST的问题呢? 相当于我们把特殊点扣出来, 然 ...