sol

linux网络编程二十:socket选项:SO_RCVTIMEO和SO_SNDTIMEO

你离开我真会死。 提交于 2019-12-10 16:39:34
SO_RCVTIMEO和SO_SNDTIMEO ,它们分别用来设置socket接收数据超时时间和发送数据超时时间。 因此,这两个选项仅对与数据收发相关的系统调用有效,这些系统调用包括:send, sendmsg, recv, recvmsg, accept, connect 。 这两个选项设置后,若超时, 返回-1,并设置errno为EAGAIN或EWOULDBLOCK. 其中connect超时的话,也是返回-1, 但errno设置为EINPROGRESS 1. 代码:设置connect超时时间 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <errno.h> #include <assert.h> #include <fcntl.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> //超时连接 int timeout_connect(const char *ip, int port, int time); int main(int argc, char **argv) { if (argc != 3) {

ioctl() fcntl() setsockopt() ioctlsocket() 用法

心已入冬 提交于 2019-12-10 15:59:15
int ioctl(int d, int request, ...); 后续是否有参数根据第二个参数request的需要来决定。 ioctl用于硬件设备I/O通道控制,控制命令与参数都与设备高度相关,通常也与系统高度相关。 int fcntl(int fd, int cmd, ... /* arg */ );后续是否有参数根据第二个参数cmd的需要来决定。这点两者相同。 操作控制的对象是: 文件描述符。 ioctl()是底层的系统调用(system call),所以跨平台特性不好。 而fcntl则是被封装的函数,各个OS都是支持的。 在网络socket中,他们作用大概相似。 例如都可以设置socket的是否允许非阻塞模式,不过设置方式上略有不同: int socketfd = .....; fcntl(sockfd, F_SETFL,fcntl(sockfd, F_GETFL, 0) |O_NONBLOCK); ioctl(sockfd, FIONBIO,1); 1:非阻塞0:阻塞 int setsockopt(int sockfd, int level, int optname, void *optval,socklen_t *optlen); 设置套接字选项.只能操作套接字。 sockfd: 套接字 level: 协议层 SOL_SOCKET/IPPROTO_IP/IPPRO

SOL自定义函数

喜欢而已 提交于 2019-12-10 06:28:31
先介绍下MySQL自带的一些函数: 结构:sql --> 结果 #作用 以下都是运行结果 : 字符串相关函数 select concat ( 'zhou' , 'yi' ) ; -- > zhouyi #字符串链接 select concat_ws ( '&' , zhou '' , 'yi' ) ; -- > zhou & yi #指定分割符号进行字符串链接 # FOMRAT ( N , D , locale ) ; N对象,D小数位数,locale可选 select format ( 2019.011 , 1 ) ; -- > 2019.0 #数字格式化 select lower ( 'ZY' ) ; -- > zy # 转小写 ; upper 转大写 select replace ( 'zhouyibaba' , 'zhouyi' , '' ) ; -- > baba# 替换 SELECT left ( 'chinese' , 4 ) ; -- > chin # 左截取 ; right ( str , len ) 右截取 ; substring指定截取 select length ( 'zhouyi' ) ; -- > 6 # 返回长度 select char_length ( "周毅" ) ; -- > 2 # 如果是length返回 6 select ltrim ( '

基于TCP客户端和服务端的数据交换

大城市里の小女人 提交于 2019-12-09 15:22:17
基于TCP客户端和服务端的数据交换 TCP套接字 TCP套接字是面向连接、基于流(stream)的套接字,数据收发无边界。 send 调用后数据移动至输出缓冲, recv 调用瞬间,从输入缓冲读取数据。具有一下特性: I/O缓冲在创建socket时生成; 各TCP socket的I/O缓冲独立存在; 关闭socket,输出缓冲中的数据继续传输,输入缓冲中的数据将丢失。 具体实现 需求 使用TCP完成数据的上传和下载 (1) 准备: 文件夹中新建四个txt文件,1.txt、2.txt、3.txt、4.txt (2) 编写TCP客户端程序, ① TCP的客户端具有的功能:输入 文件的名字,发送到服务器 实现文件的下载 ② 客户端接收服务器端返回的数据进行判断,如果是 标识: error,提示用户文件不存在,否则将数据保存到本地 (3) 编写服务端程序 ① 接收客户端的消息,根据客户端发来的文件名,从桌面的info文件夹中读取相应的文件内容返回给客户端 ② 如果要下载的文件不存在,则返回 标识: error 客户端 import socket # 创建并连接 client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) client.connect(('localhost', 6060)) # 输入并发送文件名 filename =

江西理工摸底测试-题解报告

 ̄綄美尐妖づ 提交于 2019-12-06 03:22:32
A:开两个数组s、r,s存容量,r存放了多少。用一个中间值temp来记录当前多出的水,两种情况,一种满了输出 s[ i ],多余的放 temp 里,另一种没满输出 r[ i ] + temp。 AC代码: Water B:先找出40000以内的素数,放在一个数组ve里,并标记40000以内的数组。两遍循环,第二个大于等于第一个数,第三个数就是n-ve[ i ] - ve[ j ],判断第三个数大于第二个且是素数则 ans++。这里的标记用map存超时了,有点迷。 AC代码: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <map> 6 using namespace std; 7 typedef long long ll; 8 int a[40001]; 9 int ve[4500],num; //40000以内的素数4200多个,4500足够了 10 void init(){ 11 for(int i=2;i<=40000;i++){ 12 if(a[i]==1) continue; 13 ve[num++]=i; 14 a[i]=2; 15 int t=i+i; 16 while(t<=40000){ 17 a[t]=1; 18 t

【模板】 计几有关圆的模板

匆匆过客 提交于 2019-12-04 06:43:48
1 Vector Rotate(Vector A, double rad) { 2 return Vector(A.x * cos(rad) - A.y * sin(rad), A.x * sin(rad) + A.y * cos(rad)); 3 } 4 double angle(Vector v) {return atan2(v.y, v.x);} 5 struct Circle { 6 Point c; 7 double r; 8 Circle(Point c, double r) { 9 this->c = c; 10 this->r = r; 11 } 12 Point point(double a) { 13 return Point(c.x + cos(a) * r, c.y + sin(a) * r); 14 } 15 }; 16 17 Vector AngleBisector(Point p, Vector v1, Vector v2){//给定两个向量,求角平分线 18 double rad = Angle(v1, v2); 19 return Rotate(v1, dcmp(Cross(v1, v2)) * 0.5 * rad); 20 } 21 22 //求直线与圆的交点 23 int getLineCircleIntersection(Point p,

python no output when using pool.map_async

匿名 (未验证) 提交于 2019-12-03 08:28:06
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I am experiencing very strange issues while working with the data inside my function that gets called by pool.map. For example, the following code works as expected... import csv import multiprocessing import itertools from collections import deque cur_best = 0 d_sol = deque(maxlen=9) d_names = deque(maxlen=9) **import CSV Data1** def calculate(vals): #global cur_best sol = sum(int(x[2]) for x in vals) names = [x[0] for x in vals] print(", ".join(names) + " = " + str(sol)) def process(): pool = multiprocessing.Pool(processes=4) prod =

solaR timestamp for radiation on a tilted surface

匿名 (未验证) 提交于 2019-12-03 02:31:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I am trying to use the R package solaR to calculate irradiance on a tilted plane given measured irradiance on the horizontal plane. I can get the code to work, but the final output timestamp does not make sense. Data for this code can be found here . It is one day's worth of measured irradiance (global horizontal -- ghz, direct normal -- dir, diffuse horizontal -- dhz, and outdoor temp ta) for Austin, TX. The timestamp is local 'CST6CDT' time. The data is for a clear day, so that maximum value of global horizontal (ghz) should roughly

Don&#039;t split on underscore with solr.StandardTokenizerFactory

匿名 (未验证) 提交于 2019-12-03 00:56:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I'm using solr, I'm using StandardTokenizerFactory in the text field but I don't want to split on the underscore. Do I have to use another toknizer like PatternTokenizerFactory or I can do this with StandardTokenizerFactory ? as I need the same functionality of StandardTokenizerFactory but without split on underscore. 回答1: I don't think you can do it in StandardTokenizerFactory. One solution is to first replace underscores with something the StandardTokenizerFactory won't process and something your documents won't otherwise contain. For

十一课堂|通过小游戏学习Ethereum DApps编程(4)

北城以北 提交于 2019-12-01 22:20:03
在上篇完结的时候,我们制造出了这个独一无二可爱至极的角色: 这里我们继续总结一些关于solidity语言的知识点。并且开始了解一些比较高级的内容。 ERC20 tokens以及ERC721标准,和crypto-collectible。这些知识可以让我们可以和其他玩家交易自己的创造的角色。 1 Token 对于token的理解,众说纷纭。为了让你清醒的记忆token在这里的定义,我就不举例其他对token的解释了。 在这里,token就是一个Dapp,一个智能合约的意思。 重要的事情说三遍: token就是一个Dapp,一个智能合约的意思。 token就是一个Dapp,一个智能合约的意思。 这个智能合约可以追溯谁拥有多少"金币",然后有一些功能可以让"金币"拥有者进行交易。 So basically a token is just a contract that keeps track of who owns how much of that token, and some functions so those users can transfer their tokens to other addresses. 因为ERC20 tokens是一个已经被实现了的Dapp,就意味着,你可以直接在你的Dapp里面使用ERC20 tokens,不需要自己去定义自己的"金币"。 在ERC20