socket

[CentOS7] systemd

可紊 提交于 2020-04-07 07:32:01
声明:本文主要总结自: 鸟哥的Linux私房菜-第十七章、認識系統服務 (daemons) ,如有侵权,请通知博主 查看当前系统设定的服务启动脚本的类型:ls /usr/lib/systemd/system | cut -d '.' -f 2 | sort | uniq 1. /usr/lib/systemd/system  ==> 每个服务最主要的启动脚本设定 2. /run/systemd/system  ==> 系统过程中所产生的服务脚本 3. /etc/systemd/system  ==> 该目录下都是soft link文件,软链接到/usr/lib/systemd/system目录下的启动脚本,因此该目录决定了开机启动后开启哪些服务 优先级顺序:3 > 2 > 1 副檔名 主要服務功能 .service 一般服務類型 (service unit):主要是系統服務,包括伺服器本身所需要的本機服務以及網路服務都是!比較經常被使用到的服務大多是這種類型! 所以,這也是最常見的類型了! .socket 內部程序資料交換的插槽服務 (socket unit):主要是 IPC (Inter-process communication) 的傳輸訊息插槽檔 (socket file) 功能。 這種類型的服務通常在監控訊息傳遞的插槽檔,當有透過此插槽檔傳遞訊息來說要連結服務時

Java Socket(四)使用UDP传输数据

妖精的绣舞 提交于 2020-04-07 05:44:51
参考资料: UDP Socket 编程 package socket; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPSocketClient { public static void main(String[] args) throws IOException { //1.定义服务器的地址、端口、数据 InetAddress address= InetAddress.getByName("localhost"); int port = 8800; byte[] data = "Hello".getBytes(); //2创建数据报 DatagramPacket packet = new DatagramPacket(data, data.length, address, port); //3创建DatagramSocket DatagramSocket socket = new DatagramSocket(); //4发送数据 socket.send(packet); System.out.println("Sended"); /* *

聊天程序(基于Socket、Thread)

一笑奈何 提交于 2020-04-06 19:34:00
聊天程序简述 1 、目的:主要是为了阐述Socket,以及应用多线程,本文侧重Socket相关网路编程的阐述。如果您对多线程不了解,大家可以看下我的上一篇博文 浅解多线程 。 2 、功能:此聊天程序功能实现了服务端跟多个客户端之间的聊天,可以群发消息,选择ip发消息,客户端向服务端发送文件。 (例子为WinForm应用程序) Socket ,端口,Tcp,UDP。 概念 1 、Socket还被称作“套接字”,应用程序通常通过套接字向网络发送请求或者应答网络请求。 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 2 、端口:可以认为是计算机与外界通讯交流的出口。 3 、 Tcp : TCP 是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议。 UDP 是另一个重要的传输协议。 4 、 UDP :用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 理解Socket,端口,Tcp,UDP 1 、ip跟端口的作用:例如,你用QQ跟好友聊天,首先QQ要知根据好友所在电脑的IP地址发送信息,ip地址能确定好友的所在的电脑,但是不知道好友电脑上的QQ应用程序是哪一个,这就需要QQ提供一个端口号来确定你发过来的信息是QQ接受的数据。这样就简单的阐述了Ip跟端口的作用。 2 、Tcp

并发编程之线程、线程定时器、进程池、线程池(更新中....)

旧时模样 提交于 2020-04-06 11:33:58
线程queue用法 import queue q = queue.Queue() 队列 先进先出 q = queue.LifoQueue() #堆栈 先进后出 q = queue.PriorityQueue() # 可以根据优先级取数据 线程定时器 导入 from threading import Thread,Timer 使用 t = Timer(4,task) #过了4秒开启了一个线程 socket 多线程 服务端 import socket from threading import Thread def task(conn): while True: try: msg = conn.recv(1024) if len(msg) == 0:break conn.send(msg.upper()) except Exception: print("客户端关闭了一个链接") break def run(): while True: s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(('127.0.0.1',8020)) s.listen(5) while True: conn,addr = s.accept() t = Thread(target=task,args=(conn,)) t.start() if

C# 字符串IP转换为TCP/IP中的ipaddress

走远了吗. 提交于 2020-04-06 11:11:45
` string ip = InitClass.ReadString("Jiguangji", "IP", ""); int port = 502; if (InitClass.ReadString("Jiguangji", "Port", "") != "") { port = Convert.ToInt32(InitClass.ReadString("Jiguangji", "Port", "")); } try { //1,创建socket Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //2,发起建立连接的请求 ** IPAddress ipaddress = IPAddress.Parse(ip); //可以把一个字符串的ip地址转化成一个ipaddress的对象** EndPoint point = new IPEndPoint(ipaddress, port); tcpClient.Connect(point); //通过ip:端口号 定位一个要连接到的服务器端 //发送模板给打印机` 来源: oschina 链接: https://my.oschina.net/xiaoxiezi/blog/3220682

websocket

[亡魂溺海] 提交于 2020-04-06 10:57:09
目录 1.1 websocket原理 1.2 websocket使用 1.3 websocket心跳包机制 1.1 websocket原理 1、什么是webSocket?   1. webSocket是一种在单个TCP连接上进行全双工通信的协议         2. 客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。   3. 浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输    远古时期解决方案就是轮训: 客户端以设定的时间间隔周期性地向服务端发送请求,频繁地查询是否有新的数据改动(浪费流量和资源) 2、webSocket应用场景?   1. 聊天软件: 最著名的就是微信,QQ,这一类社交聊天的app   2. 弹幕: 各种直播的弹幕窗口   3. 在线教育: 可以视频聊天、即时聊天以及其与别人合作一起在网上讨论问题… 3、图解http与webSocket比较   1. 浏览器通过 JavaScript 向服务端发出建立 WebSocket 连接的请求   2. 在 WebSocket 连接建立成功后,客户端和服务端就可以通过 TCP连接传输数据。   3. 因为WebSocket 连接本质上是 TCP 连接,不需要每次传输都带上重复的头部数据    4、websocket原理   1.

webbench工具使用和源码分析

风格不统一 提交于 2020-04-06 08:00:54
Webbench是有名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发.它的帮助文件和文档请到:www.webbench.com上查看. Webbech能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况.webBech的标准测试可以向我们展示服务器的两项 内容:每秒钟相应请求数和每秒钟传输数据量.webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进 行测试的能力.还有就是他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试. 下载: 官方网站:http://home.tiscali.cz/~cz210552/webbench.html 安装: tar zxvf webbench-1.5.tar.gz cd webbench-1.5 make;make install 使用: webbench -c 200 -t 20 http://www.doglover.net/ 其中-c 200 代表200个并发用户进行访问-t 20 即20S,访问的url为 http://www.doglover.net/ ;运行20S之后可以看到如下的结果: 可以根据打印中的信息来判断网站的抗压情况。另外使用 webbench -help 可以获得更多的使用信息

高级必问:Linux 中的零拷贝技术是什么?

南笙酒味 提交于 2020-04-05 22:57:05
作者:卡巴拉的树 https://www.jianshu.com/p/fad3339e3448 正文 本文探讨Linux中 主要的几种零拷贝技术 以及零拷贝技术 适用的场景 。为了迅速建立起零拷贝的概念,我们拿一个常用的场景进行引入: 01 引文 在写一个服务端程序时(Web Server或者文件服务器),文件下载是一个基本功能。这时候服务端的任务是:将服务端主机磁盘中的文件不做修改地从已连接的socket发出去,我们通常用下面的代码完成: while((n = read(diskfd, buf, BUF_SIZE)) > 0) write(sockfd, buf , n); 基本操作就是循环的从磁盘读入文件内容到缓冲区,再将缓冲区的内容发送到socket。但是由于Linux的I/O操作默认是缓冲I/O。这里面主要使用的也就是read和write两个系统调用,我们并不知道操作系统在其中做了什么。实际上在以上I/O操作中,发生了多次的数据拷贝。 当应用程序访问某块数据时,操作系统首先会检查,是不是最近访问过此文件,文件内容是否缓存在内核缓冲区,如果是,操作系统则直接根据read系统调用提供的buf地址,将内核缓冲区的内容拷贝到buf所指定的用户空间缓冲区中去。如果不是,操作系统则首先将磁盘上的数据拷贝的内核缓冲区,这一步目前主要依靠DMA来传输

【Linux】Linux C socket 编程之UDP

孤人 提交于 2020-04-04 16:32:59
发送方: /* * File: main.c * Author: tianshuai * * Created on 2011年11月29日, 下午10:34 * * 主要实现:发送20个文本消息,然后再发送一个终止消息 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> int port=6789; int main(int argc, char** argv) { int socket_descriptor; //套接口描述字 int iter=0; char buf[80]; struct sockaddr_in address;//处理网络通信的地址 bzero(&address,sizeof(address)); address.sin_family=AF_INET; address.sin_addr.s_addr=inet_addr("127.0.0.1");//这里不一样 address.sin_port=htons(port); //创建一个 UDP socket socket_descriptor=socket(AF

linux下udp编程

感情迁移 提交于 2020-04-04 16:30:34
#include<sys/types.h> #include<sys/socket.h> #include<unistd.h> #include<netinet/in.h> #include<arpa/inet.h> #include<stdio.h> #include<stdlib.h> #include<errno.h> #include<netdb.h> #include<stdarg.h> #include<string> #include<iostream> #include<cstring> /* 创建UDP套接口 */ struct sockaddr_in server_addr; memset(&server_addr,0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(port); /* 创建socket */ int server_socket_fd = socket(AF_INET, SOCK_DGRAM, 0); if(server_socket_fd == -1) { perror("Create Socket Failed:");