一. ***

C/S架构:客户端(client)/服务端(server)架构,

B/S架构:浏览器(browser) / 服务端(server)架构

软件cs架构:浏览器,qq,微信,陌陌等等

硬件cs架构:打印机

二. 网络通信的整个流程  ***

集线器:将所有电脑联通起来

交换机:升级版的集线器

网卡:接收处理电信号

Mac地址:物理地址: 1C-1B-0D-74-43-9A  前三位厂商编号  后三位生产流水号,全球唯一的,也就是你网络设备的身份证号

姑娘的mac地址:约吗?

Ip地址  IPv4 地址: 192.168.12.11  划分广播域

Ip地址段:192.168.12.0 --- 192.168.12.255 同一ip地址段,称为同一子网,以广播的形式通信.192.168.0.0 -- 192.168.255.255

子网掩码:计算是否属于同一网段,同一子网 255.255.255.0

目标ip地址是:192.168.12.16

11000000.10101000.00001100.00010000

255.255.255.0

11111111.11111111.11111111.00000000

11000000.10101000.00001100.00000000

192.168.12.0

DHCP协议:自动获取IP地址

Arp协议:通过ip地址获取mac地址

域名:www.jd.com

DNS服务端:{‘www.jd.com’:173.16.49.0}

三. 初识socket  *****

服务器端代码

import socket#导入socket模块

#创建socket对象,创建了一个手机server = socket.socket()

#给程序设置一个ip地址和端口号,买了个手机卡ip_port = ('192.168.12.70', 8002)

#绑定ip地址和端口,插卡server.bind(ip_port)

#监听ip地址和端口,简称开机server.listen()

print('111111')#等待建立连接, conn是连接通道,addr是客户端的地址,阻塞程序conn, addr = server.accept()

print('222222')

#服务端通过conn连接通道来收发消息,通过recv方法,recv里面的参数是字节(B),1024的意思1024B=1KBfrom_client_msg = conn.recv(1024)

print('高旺说:', from_client_msg.decode('utf-8'))

to_client_msg = input('高旺的女朋友说:')

#回复消息:通过send方法,参数必须是字节类型的,conn.send(to_client_msg.encode('utf-8'))

#关闭通道,关电话,通过close方法conn.close()#关闭socket对象,关机server.close()

客户端代码

#导入socket
import socket
#创建一个socket对象
client = socket.socket()
#找到服务端的ip地址和端口
server_ip_port = ('192.168.12.11',8002)
#连接服务端的应用程序,通过connect方法,参数是服务端的ip地址和端口,打电话
client.connect(server_ip_port)

to_server_msg = input('高旺说:')
#发消息,用的send方法,但是调用者是client的socket对象
client.send(to_server_msg.encode('utf-8'))

from_server_msg = client.recv(1024)

print('高旺的女朋友说:',from_server_msg.decode('utf-8'))
client.close()

day 26 网络通讯流程 初识socke的更多相关文章

  1. DIOCP网络通讯流程

    DIOCP 运作核心探密   原文连接: http://blog.qdac.cc/?p=2362 原作者: BB 天地弦的DIOCP早已经广为人知了,有很多的同学都用上了它,甚至各种变异.修改版本也出 ...

  2. 基于TCP协议的网络通讯流程

    不多说了,先上个图: 从上面的图中可以看出来,基于TCP协议进行通讯可以大致分成以下几个阶段: 1. 首先是在服务器端, TCP Sever调用socket(), bind(), listen()完成 ...

  3. day26 网络通讯的整个流程

    一.网络通信原理 1.  互联网的本质就是一系列的网络协议 2.  互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 各层的功能简述: [1]物理层:主要定义物理设备标准,如网 ...

  4. Windows 网络通讯开发

    Windows 网络通讯开发 一.Windows网络开发API 由于C++标准库中没有网络库,所以进行网络开发的时候要调用系统API.Windows通讯开发API包括以下几个基本函数及成员类型: 1. ...

  5. 文档:网络通讯包结构(crc校验,加解密)

    一直想把这个流程整理一下. 包结构: 包 对(datacrc+protoID+dataSize)组成的byte[] 进行crc计算而得到 对(数据内容)进行crc计算而得到 协议号 数据内容的字节长度 ...

  6. Socket网络通讯开发总结之:Java 与 C进行Socket通讯 + [备忘] Java和C之间的通讯

    Socket网络通讯开发总结之:Java 与 C进行Socket通讯 http://blog.sina.com.cn/s/blog_55934df80100i55l.html (2010-04-08 ...

  7. zigbee学习:示例程序SampleApp中通讯流程

    zigbee学习:示例程序SampleApp中通讯流程 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 参考链接: http://wjf88223.bl ...

  8. C#.NET通过Socket实现平行主机之间网络通讯(含图片传输的Demo演示)

    在程序设计中,涉及数据存储和数据交换的时候,不管是B/S还是C/S模式,都有这样一个概念:数据库服务器.这要求一台性能和配置都比较好的主机作为服务器,以满足数目众多的客户端进行频繁访问.但是对于一些数 ...

  9. tcp/ip网络通讯安全加密方法

    tcp/ip网络通讯安全是一个广受关注的话题,现在也有一些基于tcp/ip加密技术标准如SSL,TLS等.但很多时候编写一些简单的网络通讯把这标准加密应用添加进来乎一下子把程序变得复杂了,而实现自己的 ...

随机推荐

  1. 自动化测试工具Telerik Test Studio发布R1 2019|附下载

    Telerik Test Studio是一个用于功能性Web.桌面和移动测试的直观测试自动化工具,它能轻松地实现自动化测试.同时会为GUI.性能.加载和API测试提供完整的自动化测试解决方案. [Te ...

  2. ThreadPoolExcutor

    先保存一个链接,后续更新 JAVA进阶----ThreadPoolExecutor机制 ExecutorService生命周期 理解ThreadPoolExecutor源码(一)线程池的corePoo ...

  3. dubbo-admin 无法支持JDK1.8

    dubbo-admin 无法支持JDK1.8怎么处理? 1.从git上下载最新源码 https://github.com/alibaba/dubbo 2.编译war包,或直接容器启动

  4. ClickOnce 和管理员权限

    有些程序需要管理员权限需要运行,同时又想用ClickOnce进行发布,这时候就麻烦了,两者是互斥的. 解决方案是,去掉管理员权限的要求,可以进行发布. 程序启动的时候,加载程序员权限的请求. 代码如下 ...

  5. linux内核工作队列使用总结

    我总结出的内核工作队列中的4种用法 1. 使用系统的工作队列(不延迟) 1)定义一个工作: struct work_struct my_work; 2)编写一个函数: void my_work_fun ...

  6. shell脚本实例-脚本批量创建用户

    #!/usr/bin/bash read -p "Please input number: " num if [[ ! "$num" =~ ^[0-9]+$ | ...

  7. css 伪类: 1)a:link , a:visited, a:hover, a:active 2):first-child

    1. 链接伪类: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&qu ...

  8. Python数据分析库pandas基本操作

    Python数据分析库pandas基本操作2017年02月20日 17:09:06 birdlove1987 阅读数:22631 标签: python 数据分析 pandas 更多 个人分类: Pyt ...

  9. Fedora 10编程开发工具

    1请问Fedora 10编程开发工具有什么 编辑器就用vim,编译用gcc,当然个人爱好随意 IDE的话推荐eclipse,如果做C/C++的,用codeblocks也是个不错的选择 输入gcc -v ...

  10. JAVA Collections.shuffle打乱列表

    在JAVA中如果想打乱LIST的顺序可以调用Collections.shuffle()或者Collections.shuffle(List<?> list, Random rnd)方法. ...