套接字

python socket基础

不羁岁月 提交于 2019-12-11 14:09:45
# socket """ Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯 语法: socket.socket(AddressFamily, Type) 该函数带有两个参数: Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或者 SOCK_DGRAM(数据报套接字,主要用于 UDP 协议) 套接字使用流程: 创建套接字 使用套接字收/发数据 关闭套接字 """ # 创建TCP 语法 """ import socket # 创建tcp的套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # ...这里是使用套接字的功能... # 关闭套接字 tcp_socket.close() """ # 创建UDP 语法 """ import socket # 创建tcp的套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # ..

2019.12.10

限于喜欢 提交于 2019-12-11 02:45:22
一 相对路径呵绝对路径 绝对路径:路径的写法一定是由根目录“/”写起的。是直接进入到某一个目录下。 例:# cd /etc/sysconfig 相对路径:不是由” /“写起的。一步步进行切换目录进行的。 例:# cd /etc # cd sysconfig 命令 cd 用来变更用户所在目录 Cd .. 切换到主目录 Cd . 切换到上一层目录 Cd / 切换到根目录下 Cd /etc/ 切换到etc目录下 Cd 只能切换目录 不能切换文件中 切换到文件是会报错 命令mkdir 创建目录 mkdir 【-mp】 【目录名称】 -m 指定创建目录的权限 -p 可以创建多个目录 命令rmdir 这个命令只能删除目录不能删除文件 命令 rm -r 可以删除非空目录 会进行询问是否删除目录 -f 强制删除目录,并不询问是否删除目录 二 环境变量PATH Which 用于查找某个命令的绝对路径 -n<文件名长度>  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。 -p<文件名长度>  与-n参数相同,但此处的<文件名长度>包括了文件的路径。 -w  指定输出时栏位的宽度。 -V  显示版本信息。 echo是打印变量的值或者给定的字符串,     比如,输入echo hello或者echo "hello"都是在控制台打印出hello单词    

基于Java实现hello/hi简单网络聊天程序

a 夏天 提交于 2019-12-10 22:15:52
目录 Socket简要阐述 Socket的概念 Socket原理 hello/hi的简单网络聊天程序实现 服务器端 客户端 程序执行结果 跟踪分析调用栈 & Linux API对比 创建ServerSocket 调用栈图示 源码分析 Socket绑定 调用栈图示 源码分析 Socket监听 调用栈图示 源码分析 Socket Accept 调用栈图示 源码分析 Java Socekt API与Linux Socket API 参考链接 Socket简要阐述 Socket的概念 Socket的英文原义是“孔”或“插座”。 在网络编程中,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个Socket。 Socket套接字是通信的基石,是支持 TCP/IP协议 的网络通信的基本操作单元。 它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。 Socket本质是 编程接口(API) ,对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。 HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。 Socket原理 Socket实质上提供了进程通信的端点。进程通信之前

Java实现一个hello/hi的简单的网络聊天程序

房东的猫 提交于 2019-12-10 20:02:07
实验介绍   本次实验使用Java语言,使用Java Socket以tcp协议实现客户端和服务器端的通信。 什么是socket通信?   在网络编程中,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。socket通信是基于应用服务与TCP/IP通信之间的一个抽象,它将TCP/IP协议里面复杂的通信逻辑进行分装,对用户来说,只要通过一组简单的API就可以实现网络的连接。 Socket套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。Socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。 套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 1、服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。 2、客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。 3、连接确认

NIO(一):Java NIO概述

不想你离开。 提交于 2019-12-10 19:34:38
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一: Java NIO 1.1 NIO主要有以下几个核心部分组成,即: Channels(通道) Buffers (缓冲区) Selectors (选择器) 虽然Java NIO 中除此之外还有很多类和组件,但 Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类。因此,接下来将集中简单了解这三个组件。 1.2 Channel 和 Buffer 基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。 数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中。这里有个图示: Channel和Buffer有好几种类型。 JAVA NIO中的一些主要Channel的实现: FileChannel : 用于读取、写入、映射和操作文件的通道。(多个并发线程可安全地使用文件通道。) DatagramChannel : 针对面向数据报套接字的可选择通道。(数据报通道不是网络数据报套接字的完整抽象。) SocketChannel : 针对面向流的连接套接字的可选择通道。(套接字通道不是连接网络套接字的完整抽象) ServerSocketChannel :

简单hello/hi程序、分析及Java Socket API与Linux Socket API对比

99封情书 提交于 2019-12-10 13:22:41
1.Socket 定义 套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。 传输层实现端到端的通信,因此,每一个传输层连接由两个端点/。那么,传输层连接的断电是什么呢,不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口,传输层连接的端点叫做套接字(socket)。根据RFC793的定义,端口号拼接到IP地址就构成了套接字。所谓套接字,实际上是一个通信端点,每个套接字都有一个套接字序号,包括主机的IP地址与一个16为的主机端口号,即形如(主机IP地址:端口号)。例如,如果IP地址是210.37.145.1,而端口号是23,那么得到套接字就是(210.37.145.1:23).总之,套接字Socket=(IP地址:端口号),套接字的表示方法是点分十进制的IP地址后面写上端口号,中间用冒号或逗号隔开。每一个传输层链接唯一地被通信两端的两个端点(即两个套接字)所确定。 2. Hello/Hi 下面用Java简单的实现一个基于Socket通信的hello/hi程序: Server端: import java.io.BufferedReader; import java.io.IOException;

⟅UNIX网络编程⟆⦔listen函数

无人久伴 提交于 2019-12-10 12:57:11
目录 说在前面 基本说明 定义 具体细节 补充说明 说在前面 环境: ubuntu16.04 参考: UNIX网络编程、 linux manual page 基本说明 图一 listen函数由服务器调用,主要负责监听套接字的连接以及规定套接字连接队列的容量(见下面英文原文) listen for socket connections and limit the queue of incoming connections socket函数创建一个套接字时,该套接字被称为主动套接字,即一个将要调用connect函数的客户套接字。而listen函数将一个未连接的套接字转换为 被动套接字 ,指示 内核应接受指向该套接字的连接请求 。 listen函数同时规定指向该套接字的连接请求所形成的队列的容量(规定内核为相应套接字排队的最大连接个数),该容量由backlog参数指定。 定义 # include <sys/socket.h> int listen ( int sockfd , int backlog ) 参数说明: sockfd 套接字描述符。 backlog 内核为任意一个给定的监听套接字维护两个队列: 未完成连接队列 该队列中的连接均处于满足以下条件的状态:客户发送的SYN包已到达服务器,服务器正在等待完成对应的TCP三路握手。即 SYN_RCVD 状态

网络

▼魔方 西西 提交于 2019-12-10 12:10:57
私有ip 私有ip就是局域网中使用的ip地址,国际规定有一部分ip地址是在局域网中使用的 私有ip的范围,也就是不在公网中使用的ip地址范围: 10.0.0.0~10.255.255.255 172.16.0.0~172.31.255.255 192.168.0.0~192.168.255.255 4. 本机ip地址 127.0.0.1表示本机ip地址; 本机域名是localhost; 通过域名可以解析一个ip地址,域名方便大家记忆某台电脑的主机地址 Linux命令(ping, ifconfig) 查看或配置网卡信息:ifconfig ifconfig查看网卡的信息: 测试远程主机连通性:ping 通常用ping来检测网络是否正常 2. 端口号 端口号:使用唯一一个编号来标识端口, 其实就是标识端口的一个编号。 在linux系统中,端口号有65536(2的16次方)个 端口号划分 端口号不是随意使用的,而是按照一定的规定进行分配。 端口号分为知名端口号和动态端口号 3.1 知名端口号(Well Known Ports) 知名端口号: 系统程序使用的端口号 知名端口号是众所周知的端口号,范围从0到1023 80端口分配给HTTP服务 21端口分配给FTP服务 一般情况下,如果一个程序需要使用知名端口的需要有root权限 3.2 动态端口号(Dynamic Ports) 动态端口号:

Python socket编程

≡放荡痞女 提交于 2019-12-10 04:13:19
每门语言都会存在网络编程,python也不例外,常见的就是socket编程。 socket:套接字 套接字好比电话的插口,主机和端口就好比区号和电话号码,主机:是你要连接到哪里,端口:是从那个口子连过去, 和大多数语言一样,python 支持面向连接和无连接。 面向连接即需要先连接然后通讯, 面向连接主要协议就是传输控制协议(tcp),要创建tcp套接字时需要指定套接字类型为 SOCK_STRAM,表达了他作为流套接字的特点。 无连接,顾名思义无需建立连接就可以进行通讯,这时数据到达顺序、可靠性就无法保证了。 实现这种连接的协议就是用户数据包协议(udp)。创建UDP时需要指定套接字类型为 SOCK_DGRAM。 创建 socket: 创建socket用到 socket模块函数,语法为: socket(socket_family,socket_type,protocol=0) socket_family不是 AF_VNIX 就是 AF_INET,通常使用的是AF_INET(不明白可以去查些资料),socket_type可以是 SOCK_STREAM 或者 SOCK_DGRAM,protocol一般不填,就默认为0 创建一个TCP/IP的套接字: tcpSock = socket(socket.AF_INET,socket.SOCK_STRAM) 创建一个UDP/IP的套接字:

使用java实现一个hello/hi的简单的网络聊天程序

雨燕双飞 提交于 2019-12-09 22:52:09
1、socket原理      Socket实质上提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。正如打电话之前,双方必须各自拥有一台电话机一样。 套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 1、服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。 2、客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。 3、连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。 2、基于java中的socket编程   客户端: import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class client { public static void main(String args[])