网络编程一定要看过的socket大山
python已经可以做很多的东西了。但是要想要和别人互联互通就会涉及到一个关键的模块socket!值得一提的是,其实socket不是python独创的一种模块,而是任何语言都会有的一个部分!自己的程序和别的电脑进行连接的时候都会用到这个方式!
但是,首先还是来看看网络通信的相关的知识,然后再慢慢的了解socket!
其实根据不同的场景大概可以分为两种情况:C/S架构和B/S架构
C/S架构的意思就是客户端和服务端的连接方式。就像是手机上的某些app程序和人家公司的服务器的沟通一样。
B/S 就是浏览器和服务端的连接方式!有了这样的统一的协议方式,大家才能用一个浏览器就可以访问不同的网站!
关于网络通信的整个流程是怎样的呢?
上网首先就要有网卡(就是插网线的地方。)然后还要有一个独有的身份认证mac地址。mac地址可是全球唯一的。出厂都设计好的。通常是由12位16进制的数字表示(前六位是厂商编号,后六位是流水线号!)
查看方法:window在cmd中输入ipconfig-all这样的指令
有了mac其实还是不够的。因为在一个局域网中,如果很多的电脑都用mac作为识别的标志。而网络传递信息的方式都是通过广播(交换机会把消息传递给每一个电脑,让电脑自己进行匹配,如果不是自己电脑的mac地址的,就会把消息给扔掉!)的形式的话,那么就很容易造成严重的拥堵,而且信息也是不安全的!
此时,IP的作用就显示出来了!有了IP就可以和同的局域网中的电脑进行消息传递了!
现在搞清了有mac和IP这两样东西就可以看下面的小案例了!
下面就用实际的小案例来看看上网过程是如何完成的.
第一步:打开浏览器,输入网址。其实看上去是在输入域名,但实际上DNS服务器会自动的翻译成一个目标网站的IP地址!
第二步:找到IP后,路由器还有一个自己的路由器的IP协议,自动的找到最优的一个路径!
第三步:目标的路由器发送请求给目标网站的服务器
第四步:目标网站的服务器返回信息
第五步:其实在你打开浏览器的时候,电脑已经给你配置了一个端口号,返回的信息会通过这个端口号来给你信息!
又会有很多朋友想要问:那平时说的内网和外网都是指什么呢?
所谓的内网就是局域网。局域网可以独立的封闭运行。外网就是广域网。很多的局域网和独立的服务器组成。
这里也有一个小知识就是在一个局域网内,一个IP必须是唯一的!就是说在这个独立网络连接中,这个IP就是对应一个电脑。但是要是和别的局域网连接的话,别的局域网有可能有重名的IP号码,这是很正常的,都是能用的!
下面看看怎么用socket代码
import socket
server=socket.socket()
ip_port=("192.168.111.1",8000)
server.bind(ip_port)
server.listen()
conn,addr=server.accept()
while True:
from_client_data=from_client_data.decode("utf8")
print(from_client_data)
if from_client_data=="bye"
break
sever_input=input("对方表示:")
conn.send(server_input.encode("utf8"))
if server_input=="bye"
break
conn.close()
server.close()
那么客户端应该如何来进行连接呢?
import socket
import time
client = socket.socket()
server_ip_port=("192.168.111.1",8001)
client.connect(server_ip_port)
while True:
client_input=input("想要说")
client.send(client_input.encode("utf8"))
if client_input=="bye"
break
from_server_data = client.recv(1024)
print(“服务端”,from_server_data.decode(utf8))
if from_server_data.decode("utf8")=="bye":
break
client.close()
记得一定要先启动服务端,然后再用客户端
网络编程一定要看过的socket大山的更多相关文章
- 网络编程一定要看过的socket另一座大山
上次的socket还有很多坑.但是总是在不断的改进的.下面就来看看一个升级版的内容 import socket server = socket.socket() ip_port = ("19 ...
- Linux下TCP网络编程与基于Windows下C#socket编程间通信
一.linux下TCP网络编程基础,需要了解相关函数 Socket():用于套接字初始化. Bind():将 socket 与本机上的一个端口绑定,就可以在该端口监听服务请求. Listen():使s ...
- c++ 网络编程(五) LINUX下 socket编程 多种I/O函数 -以及readv和writev函数用法
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9614056.html 一.多种I/O函数 前言:之前我们讲的数据传输一般Linux上用writ ...
- c++ 网络编程(六)LINUX下 socket编程 多播与广播 实现一次发送所有组客户端都能接收到
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9614288.html 一.多播 锲子:有这么一种情况,网络电台可能需要同时向成千上万的用户传输 ...
- c++ 网络编程(七) LINUX下 socket编程 基于套接字的标准I/O函数使用 与 fopen,feof,fgets,fputs函数用法
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9614820.html 一.标准I/O 1,什么是标准I/O?其实是指C语言里的文件操作函数,如 ...
- javase的网络编程(InetAddress,UDP,TCP,URL,Socket,DatagramSocket)
通过一段时间对java网络编程相关内容的学习,写下这篇随笔,对这一部分的知识进行梳理和总结. 网络编程 一.网络编程三要素: IP地址:网络会给每个联网的主机分配一个数字的编码地址,该地址就是IP地址 ...
- 从零探索Java网络编程01之 TCP/IP 与 Socket
最近完成了几项比较简单的项目, 终于是在996里偷了点闲暇时光, 想着来研究研究些啥吧? 一个普通的控制台日志映入了我的眼帘(孽缘呀): (图中使用 SpringBoot 的 log4j 来输出日志 ...
- 网络编程:tcp、udp、socket、struct、socketserver
一.TCP.UDP 一.ARP(Address Resolution Protocol)即地址解析协议,用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址. 二.在网络通信中 ...
- Socket网络编程--FTP客户端(60篇socket博客,而且都比较简单、深入浅出)
已经好久没有写过博客进行分享了.具体原因,在以后说. 这几天在了解FTP协议,准备任务是写一个FTP客户端程序.直接上干货了. 0.了解FTP作用 就是一个提供一个文件的共享协议. 1.了解FTP协议 ...
随机推荐
- 与Recommender System相关的会议及期刊
会议 We refer specifically to ACM Recommender Systems (RecSys), established in 2007 and now the prem ...
- Python3 open函数
Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError. 注意:使用 open() 方法一定要保证关闭 ...
- grep用法
正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串.vim.grep.awk .sed 都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大:在以前上班 ...
- 指导手册 07 安装配置HIVE
指导手册 07 安装配置HIVE 安装环境及所需安装包: 1.操作系统:centos6.8 2.四台虚拟机:master :10.0.2.4, slave1:10.0.2.5,slave2:10. ...
- 解决nim db_mysql could not load: libmysql.dll的问题
title: 解决nim db_mysql could not load: libmysql.dll的问题 nim中使用db_mysql 操作数据库的代码看起来很简单: import db_mysql ...
- tomcat文件下目录介绍
主目录下有bin ,conf ,lib ,logs ,temp ,webapps ,work 7个文件夹,下面对它们分别进行介绍: 1.bin目录主要是用来存放tomcat的命令,主要有两大类,一类是 ...
- nginx——优化 Nginx 连接超时时间
1. 什么是连接超时 (1) 举个例子,某饭店请了服务员招待顾客,但是现在饭店不景气,因此要解雇掉一些服务员,这里的服务员就相当于 Nginx 服务建立的连接 (2) 当服务器建立的连接没有接收处理请 ...
- EditPlus软件自动补全文档htmlbar.acp设置 及 模板文件格式
1.在htmlbar.acp文件末尾添加如下内容,可自动补全: #T=HTML <html> ^! </html> #T=HEAD <head> ^ ...
- 马凯军201771010116《面向对象与程序设计Java》第十五周学习知识总结
实验十五 GUI编程练习与应用程序部署 一.知识学习部分 清单文件 每个JAR文件中包含一个用于描述归档特征的清单文件(manifest).清单文件被命名为MANIFEST.MF,它位于JAR文件的 ...
- linux之正则
grep命令: -V 打印grep的版本号 -E 解释PATTERN作为扩展正则表达式,也就相当于使用egrep. -F 解释PATTERN作为固定字符串的列表,由换行符 ...