socket

网络编程——TCP连接

醉酒当歌 提交于 2020-04-04 15:12:13
TCP在双方传输数据前,发送方先请求建立连接,接收方同意建立连接后才能传输数据。(打电话:先拨号,等对方同意接听后,才能交流)。。。高可靠性 UDP不需要建立连接(发短信)。不可靠,可能出现数据丢失等,但效率高,实时性高。 ———————————————————————————————————————————————————————————————————————————— 服务器端: import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; public class ServerSocketTest { public static void main(String[] args) throws IOException { // 新建一个服务器端的套接字 Server端监听10000端口 ServerSocket serverSocket = new ServerSocket(10000); // 建立连接,此时进入阻塞状态 Socket socket = serverSocket.accept(); System.out.println("Connected: " + socket

自签SSL证书实现客户端登录认证

依然范特西╮ 提交于 2020-04-04 13:49:01
0.介绍 自己开发的使用了SSL协议的软件,通常没必要从证书签发机构那里来获取证书,自签证书成了必要的选择。自签证书还可以用来实现客户端登录认证。 1.创建CA 创建CA的私钥 openssl genrsa -des3 -out rootCA.key 4096 创建CA的自签证书 openssl req -x509 -new -nodes -sha256 -days 3650 -key rootCA.key -out rootCA.crt 2.签发证书 生成证书的私钥 openssl genrsa -out server.key 4096 生成待签名的文件 openssl req -new -key server.key -out server.csr 使用CA进行签名 openssl x509 -req -CA rootCA.crt -CAKey rootCA.key -CAcreateserial -days 365 -sha256 -in server.csr -out server.crt 这样就获取了经CA签发的私钥server.key和证书server.crt 3.客户端的登录认证 使用相同的CA来签发服务器证书和客户端证书,服务器就可以根据CA证书来鉴定客户端的是否具有登录权限。 即:凡是经过CA签发的证书,都能登录成功;否则失败 。 4.Python代码示例

Windows Socket编程简介

喜欢而已 提交于 2020-04-03 22:16:03
WinSock编程 使用WinSock API的编程,应该了解TCP/IP的基础知识。虽然你可以直接使用WinSock API来写网络应用程序,但是,要写出优秀的网络应用程序,还是必须对TCP/IP协议有一些了解的。 1. TCP/IP协议与WinSock网络编程接口的关系 WinSock并不是一种网络协议,它只是一个网络编程接口,也就是说,它不是协议,但是它可以访问很多种网络协议,你可以把他当作一些协议的封装。现在的WinSock已经基本上实现了与协议无关。你可以使用WinSock来调用多种协议的功能。那么,WinSock和TCP/IP协议到底是什么关系呢?实际上,WinSock就是TCP/IP协议的一种封装,你可以通过调用WinSock的接口函数来调用TCP/IP的各种功能.例如我想用TCP/IP协议发送数据,你就可以使用WinSock的接口函数Send()来调用TCP/IP的发送数据功能,至于具体怎么发送数据,WinSock已经帮你封装好了这种功能。 2、TCP/IP协议介绍 TCP/IP协议包含的范围非常的广,他是一种四层协议,包含了各种硬件、软件需求的定义。 TCP/IP协议确切的说法应该是TCP/UDP/IP协议。UDP协议(User Datagram Protocol 用户数据报协议),是一种保护消息边界的,不保障可靠数据的传输。TCP协议(Transmission

socket.io 入门教程

妖精的绣舞 提交于 2020-04-03 17:01:15
转载自: http://deadhorse.me/nodejs/2011/12/29/socket.io_induction.html socket.io socket.io 是一个以实现跨浏览器、跨平台的实时应用为目的的项目。针对不同的浏览器版本或者不同客户端会做自动降级处理,选择合适的实现方式(websocket, long pull..),隐藏实现只暴露统一的接口。可以让应用只关注于业务层面上。 nodejs服务器端安装:npm install socket.io 安装之后就可以require模块来使用了: var sio = require('socket.io'); 在客户端的话,可以通过 <script src="/socket.io/socket.io.js"></script> 或者引用socket.io的CDN服务。 <script src="http://cdn.socket.io/stable/socket.io.js"></script> 在它的官方网站上有各种用法的介绍。 实际使用 这个项目是搭建在connect之上的,因此需要在connect上使用socket.io,同时,因为编辑文件有权限限制,因此还需要在socket.io中使用session和一些其他的连接信息来确认权限。 先看一下socket.io的使用, 服务端: var io =

elasticsearch的监控脚本

北城以北 提交于 2020-04-03 07:15:11
监控elasticsearch cluster 集群 通过主动模式将数据发送给zabbix server 1 import json 2 import struct 3 import socket 4 import re 5 from elasticsearch import Elasticsearch 6 7 8 def get_dict_value(res): 9 for k, v in res.items(): 10 value = v 11 return value 12 13 def get_metric_trapper(hosts): 14 sending_data = {'request': 'sender data', 'data': []} 15 es = Elasticsearch(hosts=hosts) 16 res = es.nodes.stats(node_id='_local')['nodes'] 17 v = get_dict_value(res) 18 host_name = v['name'] 19 for key_info in monitor_key_info: 20 key_one = key_info['key_one'] 21 key_two = key_info['key_two'] 22 key_three = key_info[

Socket通信

人盡茶涼 提交于 2020-04-03 04:10:35
本次分享的是一个简单的Web项目里使用的Socket通信案例 1、建立监听类: package com.trust.fricem.TCPC.service; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; /** * @Author:Singularity * @Date:2019/6/1 14:23 * @Description: Socket 服务监听 */ public class SocketServiceLoader implements ServletContextListener { //socket server 线程 private SocketThread socketThread; /** * 当Servlet 容器启动Web 应用时调用该方法。在调用完该方法之后,容器再对Filter 初始化, * 并且对那些在Web 应用启动时就需要被初始化的Servlet

转:Netty服务器线程模型概览

你离开我真会死。 提交于 2020-04-02 14:51:01
一切从ServerBootstrap开始 ServerBootstrap 负责初始话netty服务器,并且开始监听端口的socket请求。 Java代码 bootstrap bootstrap = new ServerBootstrap( new NioServerSocketChannelFactory( Executors.newCachedThreadPool(), //boss线程池 Executors.newCachedThreadPool() //worker线程池 ) ); bootstrap.setPipelineFactory( new HttpChannelPipelineFactory()); bootstrap.setOption( "child.tcpNoDelay" , true ); bootstrap.setOption( "child.keepAlive" , true ); bootstrap.bind( new InetSocketAddress(httpPort)); //端口开始监听 ServerBootstrap 用一个ServerSocketChannelFactory 来实例化。ServerSocketChannelFactory 有两种选择,一种是NioServerSocketChannelFactory

31.1.http基础知识简介

瘦欲@ 提交于 2020-04-02 12:11:37
TCP/IP协议 跨网络的主机间通讯 在建立通信连接的每一端,进程间的传输要有两个标志: IP地址和端口号,合称为套接字地址 socket address 客户机套接字地址定义了一个唯一的客户进程 服务器套接字地址定义了一个唯一的服务器进程 SOCKET套接字 Socket:套接字,进程间通信IPC的一种实现,允许位于不同主机(或同一主机)上不同进程之间进行通信和数据交换,SocketAPI出现于1983年,4.2 BSD实现 Socket API:封装了内核中所提供的socket通信相关的系统调用 Socket Domain:根据其所使用的地址 AF_INET:Address Family,IPv4 AF_INET6:IPv6 AF_UNIX:同一主机上不同进程之间通信时使用 Socket Type:根据使用的传输层协议 SOCK_STREAM:流,tcp套接字,可靠地传递、面向连接 SOCK_DGRAM:数据报,udp套接字,不可靠地传递、无连接 SOCK_RAW: 裸套接字,无须tcp或udp,APP直接通过IP包通信 客户/服务器程序的套接字函数 套接字相关的系统调用: socket(): 创建一个套接字 bind(): 绑定IP和端口 listen(): 监听 accept(): 接收请求 connect(): 请求连接建立 write(): 发送 read(): 接收

【Peer-to-Peer Sockets 工程入门】

大兔子大兔子 提交于 2020-04-01 14:07:50
Peer-to-Peer (P2P)Sockets工程在JXTA peer-to-peer虚拟网络重新实现了对应于标准TCP/IP网络中的Java标准的Socket,ServerSocket,和InetAddress等类。该工程同时还引入了一些注入Jetty web server,Apache XML-RPC客户端和服务器库,Apache Jasper JSP引擎之类的流行web package。使这些服务可以运行在Peer-to-Peer Sockets 的框架下。      在这片文章结束的时候,你会理解对P2P Sockets packages的需求和以及开发它的动机,学会怎么配置P2P Socket 库使之在你的系统上能够运行,学会怎么样建立P2P的服务器和客户端Socket,怎么使用P2P的InetAddress 类,还包括框架下的安全问题以及它的局限性。       动机      P2P Socket工程的设计的使用对象是对以下几个领域有兴趣的开发者:      ●将Internet回归到end-to-end的原则当中      ●一种绕过ICANN和Verisign的替代peer-to-peer域名系统,这个系统是完全分布式的,对更新拥有比标准DNS快的多的响应速度。      ●一种任何人都可以建立活着使用网络服务的Internet

网络基础:socket模块

﹥>﹥吖頭↗ 提交于 2020-04-01 05:36:21
socket:   套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。 基于TCP协议的socket:tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 socket参数详解: socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None) 创建socket对象的参数说明: family 地址系列应为AF_INET(默认值),AF_INET6,AF_UNIX,AF_CAN或AF_RDS。 (AF_UNIX 域实际上是使用本地 socket 文件来通信) type 套接字类型应为SOCK_STREAM(默认值),SOCK_DGRAM,SOCK_RAW或其他SOCK_常量之一。 SOCK_STREAM 是基于TCP的,有保障的(即能保证数据正确传送到对方)面向连接的SOCKET,多用于资料传送。 SOCK_DGRAM 是基于UDP的,无保障的面向消息的socket,多用于在网络上发广播信息。 proto 协议号通常为零,可以省略,或者在地址族为AF_CAN的情况下,协议应为CAN_RAW或CAN_BCM之一。 fileno