当前位置: 首页 > news >正文

凡科网骗局seo百度关键词优化软件

凡科网骗局,seo百度关键词优化软件,qq群网站制作,做电子杂志用什么网站网络编程 一、TCP编程的API socket: int socket(int domain, int type, int protocol); 返回值&#xff1a;> 0 代表函数调用成功&#xff0c;这个值是一个文件描述符< 0 代表函数调用失败 int domain&#xff1a;地址簇 AF_INET&#xff1a;IPv4 AF_INET6: IPv6 ​ i…

网络编程

一、TCP编程的API

socket:

int socket(int domain, int type, int protocol);
返回值:> 0 代表函数调用成功,这个值是一个文件描述符< 0 代表函数调用失败
int domain:地址簇 AF_INET:IPv4 AF_INET6: IPv6 
​
int type: 套接字类型 SOCK_STREAM:流式套接字   唯一对应TCP SOCK_DGRAM:  数据报套接字 唯一对应UDPSOCK_RAW:    原始套接字   针对较低层次协议
​
int protocol: 默认为0  

bind:

/*绑定通信IP和端口*/
struct sockaddr_in {sa_family_t sin_family; /* 地址族: AF_INET 2字节 */u_int16_t sin_port; /* 按网络字节次序的端口 2字节*/struct in_addr sin_addr; /* internet地址 */};
​/* Internet地址. */struct in_addr {u_int32_t s_addr; /* 按网络字节次序的地址 */};
struct sockaddr_in sddr;
bzero(&sddr, sizeof(sddr)); //将sddr做清0操作
​
uint16_t htons(uint16_t hostshort);
把本机字节序转为网络字节序
uint16_t ntohs(uint16_t netshort);
把网络字节序转为本机字节序
​
int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
返回值:成功 0失败 -1
int sockfd:                 代表socket成功返回的文件描述符
struct sockaddr *my_addr : 要绑定的IP和端口
socklen_t addrlen :        要绑定的IP和端口的结构体的大小

listen:

int listen(int s, int backlog);
返回值:        成功 0失败 -1
int s:          socket打开的文件描述符
int backlog :   允许监听的套接字队列元素的最大个数 (数目和性能产生联系)

accept:

int accept(int s, struct sockaddr *addr, socklen_t *addrlen);
返回值:                失败 -1成功 非负整数
int s:                  socket返回的文件描述 
struct sockaddr *addr: 存储连接进来的客户端的IP和端口 (NULL不关注客户端的信息)
socklen_t *addrlen: 结构体的大小

connect:

int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
返回值:                成功 0失败 -1
int sockfd:         socket返回的文件描述符
struct sockaddr *addr: 要连接的服务器的IP和PORT
socklen_t addrlen:      存储要连接服务器IP和PORT的结构体的长度
​

read函数的返回值分析

返回值为 -1 :read发生错误

返回值为0 :表示另外一端掉线

返回值大于0:表示实际读取到的字节数

注意:如果处于连接状态,且缓冲区没有内容,read会阻塞

send:

发送数据,专属网络编程

ssize_t send(int sockfd, const void *buf, size_t len, int flags);
int sockfd      : 发送的目标套接字的文件描述符(对象)
const void *buf : 要发送的内容缓冲区的首地址
size_t len      : 要发送内容的大小(字节为单位)
int flags       : 为0效果和write一摸一样(绝大多时刻选择参数)为MSG_DONTWAIT时,它是非阻塞模式
ssize_t         : >0 表示实际发送的字节数: -1 表示发送失败

recv:

发送数据,专属网络编程

ssize_t recv(int sockfd, void *buf, size_t len, int flags);
int sockfd      : 接收数据对象的文件描述符
const void *buf : 接收数据存储的缓冲区首地址
size_t len      : 期望要接收内容的大小(字节为单位)
int flags       : 为0效果和read一摸一样(绝大多时刻选择参数)为MSG_DONTWAIT时,它是非阻塞模式
ssize_t         : >0 表示实际接收的字节数: -1 表示接收失败: 0  表示另外一端退出或者关闭或者掉线

sendto:

UDP编程使用的发送函数

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);
int sockfd                      : 发送的目标套接字的文件描述符(对象)
const void *buf                 : 要发送的内容缓冲区的首地址
size_t len                      : 要发送内容的大小(字节为单位)
int flags                       : 默认为0
const struct sockaddr *dest_addr: 发送的对象(对象的IP PORT)
socklen_t addrlen:              : 上一个参数的长度
ssize_t                         : >0 表示实际发送的字节数: -1 表示发送失败                     

recvfrom:

UDP编程使用的发送函数

ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);
int sockfd                  : 接收数据对象的文件描述符
const void *buf             : 接收数据存储的缓冲区首地址
size_t len                  : 期望要接收内容的大小(字节为单位)
int flags                   : 默认为0
struct sockaddr *src_addr   : 发送方的信息(IP PORT)
socklen_t *addrlen          : 上一个参数的长度
ssize_t         : >0 表示实际接收的字节数: -1 表示接收失败                     

二、TCP服务器的模型

1、循环服务器

socket(...);
bind(...);
listen(...);
accept(...);
while(1){read(...);...write(...);
}
TCP循环服务器用的相对较少

2、并发服务器

并发服务器实现原理是多次调用accept函数

多线程实现并发

socket(...);
bind(...);
listen(...);
while(1){accept(...);pthread_create(...); //创建线程处理新的链接
}
​

多进程实现并发

socket(...);
bind(...);
listen(...);
while(1){accept(...);fork(...); //创建子进程处理新的链接
}
记得回收子进程,否则会出现僵尸进程

服务器代码:

#include <sys/wait.h>
#include <signal.h>
#include<stdio.h>
#include<pthread.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<sys/socket.h>
#include<fcntl.h>
#include<string.h>
#include<stdlib.h>
#include<netinet/ip.h>
#include<arpa/inet.h>#define SIZE 64int tcp_server_init(const char *ip,int port,int backlog)
{int fd=socket(AF_INET,SOCK_STREAM,0);if(-1==fd){return -1;}struct sockaddr_in sddr;sddr.sin_family =AF_INET;sddr.sin_port=htons(port);sddr.sin_addr.s_addr=inet_addr(ip);if(-1==bind(fd,(struct sockaddr *)&sddr,sizeof(sddr))){return -1;}if(-1==listen(fd,backlog)){return -1;}puts("listen...");return fd;
}
int tcp_server_wait(int fd)
{struct sockaddr_in cddr;socklen_t len =sizeof(cddr);int nfd=accept(fd,(void*)&cddr,&len);if(-1==nfd){return -1;}printf("IP:%s PORT:%hd\n",inet_ntoa(cddr.sin_addr),cddr.sin_port);return nfd;
}void signal_handler(int no)
{pid_t pid=waitpid(-1,NULL,WNOHANG);printf("%d 被回收!\n",pid);
}void child_handler(int fd)
{char buf[SIZE];int ret;while(1){ret=read(fd,buf,SIZE);if(0>=ret){exit(0);}if(0==strncmp(buf,"quit",4)){exit(0);}sprintf(buf,"Recv size:%d",ret);write(fd,buf,SIZE);}
}
int main(int argc, char *argv[])
{int fd=tcp_server_init("0",8881,20);if(-1==fd){perror("tcp init");return -1;}int nfd;signal(SIGCHLD,signal_handler);while(1){nfd=tcp_server_wait(fd);if(-1==nfd){continue;}pid_t pid =fork();if(-1==pid){close(nfd);continue;}else if(0==pid){close(fd);//子进程值负责通信不负责监听连接,所以关闭监听套接字//子进程去处理连接的客户端的请求child_handler(nfd);}else{close(nfd); //父进程只负责监听连接,所以关闭通信套接字}}return 0;
} 

 

http://www.tj-hxxt.cn/news/124897.html

相关文章:

  • C语言也能干大事网站开发pdf网络营销环境的分析主要是
  • 科技魏玄成盐城网站优化
  • 长沙做网站的公司对比seo网络排名优化哪家好
  • 网站不备案百度收录吗网络营销品牌策划
  • 做网站推广可行吗seo课
  • 郑州网站建设电话郑州seo优化外包顾问阿亮
  • 现在那个网站做推广效果会好点公司网站推广
  • 网站建设公司studstu口碑营销的概念是什么
  • wordpress网站添加背景音乐自己怎么注册网站
  • 全国哪个餐饮品牌的网站做的好网络营销策略案例
  • 能发布自做的视频网站正规排名网站推广公司
  • wordpress 不支持svgseosem是什么职位
  • excel表格做网站爱站之家
  • 企业网站备案要多少钱国际新闻快报
  • 网站建设需要掌握哪些知识电商运营工作内容
  • 郴州网站建设案例seo网站排名优化快速排
  • 制作企业网站的方法竞价广告代运营
  • 中英双语网站源码软文范例大全500
  • 建网站要注册吗torrent种子猫
  • 上海装修找哪家公司好百度seo工作室
  • 如何做楼盘网站怎么创建自己的网站平台
  • 霸州有做滤芯网站的吗刷赞网站推广永久
  • 国外有哪些网站是做弱电的品牌宣传推广方案
  • 蔬菜网站建设seo排名优化代理
  • 青岛网站设计软件seo网络推广公司排名
  • style wordpress 主题东莞百度seo推广公司
  • 网站备案截图投百度做广告效果怎么样
  • 专业做网站哪家正规网站建设服务商
  • 山西网站建设营销qq软文推广文章案例
  • 有什么手机做网站的石家庄谷歌seo