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

建设工程职称 在哪个网站哈尔滨网站建设兼职

建设工程职称 在哪个网站,哈尔滨网站建设兼职,微信开发文档小程序,手机端页面模板目录 1、sock.h socket常用函数 网络初始化函数 首次响应函数 测试IO处理函数 获取时间函数 总代码 2、sock.c SOCKET() ACCEPT()——服务端使用这个函数等待客户端连接 CONNECT()——客户端使用这个函数连接服务端 BIND()——一般只有服务端使用 LISTEN()——服务端…目录 1、sock.h socket常用函数 网络初始化函数 首次响应函数 测试IO处理函数 获取时间函数 总代码 2、sock.c SOCKET() ACCEPT()——服务端使用这个函数等待客户端连接 CONNECT()——客户端使用这个函数连接服务端 BIND()——一般只有服务端使用 LISTEN()——服务端使用 RECV() SEND() net_initializer()——网络初始化函数 get_time()——获取时间函数 first_response()——首次适应函数 总代码 3、生成网络动态库 客户端代码 服务端代码 成功截图 1、sock.h socket常用函数 int ACCEPT(int,struct sockaddr*,socklen_t *); int SOCKET(int,int,int); ssize_t RECV(int,void*,size_t,int); int CONNECT(int, const struct sockaddr *,socklen_t); int BIND(int, const struct sockaddr *,socklen_t); int LISTEN(int, int backlog); ssize_t SEND(int, const void *, size_t, int); 网络初始化函数 int net_initializer(const char*,int,int); 首次响应函数 int first_response(client_info); 测试IO处理函数 int test_business(int); 获取时间函数 int get_time(char* tm); 总代码 #ifndef _MYSOCK_ #define _MYSOCK_ #includesys/socket.h #includearpa/inet.h #includestring.h #includenetdb.h #includeerrno.h #includetime.h #includestdio.h #endiftypedef struct {int sockfd;int port;char ip[16]; }client_info;int ACCEPT(int,struct sockaddr*,socklen_t *); int SOCKET(int,int,int); ssize_t RECV(int,void*,size_t,int); int CONNECT(int, const struct sockaddr *,socklen_t); int BIND(int, const struct sockaddr *,socklen_t); int LISTEN(int, int backlog); ssize_t SEND(int, const void *, size_t, int);int net_initializer(const char*,int,int); int first_response(client_info); int test_business(int); int get_time(char* tm); 2、sock.c SOCKET() SOCKET(socket协议域数据传输层使用协议模式指定具体的协议) int SOCKET(int domain,int type,int protocal) {int fd; if((fdsocket(domain,type,protocal))-1){perror(socket call failed);return fd; } return fd; } ACCEPT()——服务端使用这个函数等待客户端连接 ACCEPT(服务端socket客户端的网络信息结构体客户端网络信息结构体长度) ——客户端接收数据 int ACCEPT(int sockfd,struct sockaddr* addr,socklen_t * addrlen) {int fd; if((fdaccept(sockfd,addr,addrlen))-1){perror(accept call failed);return fd; } return fd; } CONNECT()——客户端使用这个函数连接服务端 客户端只有一个socket CONNECT(用于连接的socket目标信息结构体目标信息结构体长度) int CONNECT(int sockfd, const struct sockaddr *addr,socklen_t addrlen) {int fd;if((fdconnect(sockfd,addr,addrlen))-1){perror(connect call failed);return fd;}return fd; } BIND()——一般只有服务端使用 BIND(需要绑定的socket网络信息结构体的地址网络信息结构体的长度) int BIND(int sockfd, const struct sockaddr *addr,socklen_t addrlen) {int fd;if((fdbind(sockfd,addr,addrlen))-1){perror(bind call failed);return fd;}return fd; } LISTEN()——服务端使用 LISTEN(服务端socket等待连接队列的最大长度) int LISTEN(int sockfd, int backlog) {int fd;if((fdlisten(sockfd, backlog))-1){perror(listen call failed);return fd;}return fd; } RECV() RECV(套接字sockfd数据buf数据长度size选项发送的长度) 对于服务端sockfd是accept函数的返回值 对于客户端sockfd是connect函数的返回值 ssize_t RECV(int sockfd,void* buf,size_t len,int flag) {ssize_t fd; if((fdrecv(sockfd,buf,len,flag))-1){perror(recv call failed);return fd; } return fd; } SEND() SEND(发送的人的sockfd数据buf数据包长度) ssize_t SEND(int sockfd, const void *buf, size_t len, int flags) {ssize_t fd;if((fdsend(sockfd,buf,len,flags))-1){perror(send call failed);return fd;}return fd; } net_initializer()——网络初始化函数 net_initializer(ip地址端口号可以监听队列的最大长度) int net_initializer(const char* ip,int port,int backlog) {int sockfd;struct sockaddr_in addr;bzero(addr,sizeof(addr));addr.sin_familyAF_INET;addr.sin_porthtons(port);addr.sin_addr.s_addrinet_addr(82.157.31.74);sockfdSOCKET(AF_INET,SOCK_STREAM,0);BIND(sockfd,(struct sockaddr*)addr,sizeof(addr));LISTEN(sockfd,backlog);return sockfd; } get_time()——获取时间函数 get_time(时间数组) int get_time(char* tm) {bzero(tm,1024);time_t tp;tptime(NULL);ctime_r(tp,tm);tm[strlen(tm)-1]\0;return 0; } first_response()——首次适应函数 first_response(定义的结构体) client_info——定义的结构体——包含portip和创建的套接字 typedef struct {int sockfd;int port;char ip[16]; }client_info; int first_response(client_info cf) {char response[1500];bzero(response,1500);char tm[1024];get_time(tm);printf(Server,output info,client ip %s,client port %d\n,cf.ip,cf.port);SEND(cf.sockfd,response,strlen(response),MSG_NOSIGNAL);return 0; } 总代码 #includesock.hint ACCEPT(int sockfd,struct sockaddr* addr,socklen_t * addrlen) {int fd; if((fdaccept(sockfd,addr,addrlen))-1){perror(accept call failed);return fd; } return fd; }int SOCKET(int domain,int type,int protocal) {int fd; if((fdsocket(domain,type,protocal))-1){perror(socket call failed);return fd; } return fd; }ssize_t RECV(int sockfd,void* buf,size_t len,int flag) {ssize_t fd; if((fdrecv(sockfd,buf,len,flag))-1){perror(recv call failed);return fd; } return fd; }int CONNECT(int sockfd, const struct sockaddr *addr,socklen_t addrlen) {int fd;if((fdconnect(sockfd,addr,addrlen))-1){perror(connect call failed);return fd;}return fd; }int BIND(int sockfd, const struct sockaddr *addr,socklen_t addrlen) {int fd;if((fdbind(sockfd,addr,addrlen))-1){perror(bind call failed);return fd;}return fd; }int LISTEN(int sockfd, int backlog) {int fd;if((fdlisten(sockfd, backlog))-1){perror(listen call failed);return fd;}return fd; }ssize_t SEND(int sockfd, const void *buf, size_t len, int flags) {ssize_t fd;if((fdsend(sockfd,buf,len,flags))-1){perror(send call failed);return fd;}return fd; }int net_initializer(const char* ip,int port,int backlog) {int sockfd;struct sockaddr_in addr;bzero(addr,sizeof(addr));addr.sin_familyAF_INET;addr.sin_porthtons(port);addr.sin_addr.s_addrinet_addr(82.157.31.74);sockfdSOCKET(AF_INET,SOCK_STREAM,0);BIND(sockfd,(struct sockaddr*)addr,sizeof(addr));LISTEN(sockfd,backlog);return sockfd; }int get_time(char* tm) {bzero(tm,1024);time_t tp;tptime(NULL);ctime_r(tp,tm);tm[strlen(tm)-1]\0;return 0; }int first_response(client_info cf) {char response[1500];bzero(response,1500);char tm[1024];get_time(tm);printf(Server,output info,client ip %s,client port %d\n,cf.ip,cf.port);SEND(cf.sockfd,response,strlen(response),MSG_NOSIGNAL);return 0; } 3、生成网络动态库 将所有的.c或.cpp变成可重定位二进制文件载入库数据时查找可用内存而不是固定地址 生成可重定位的二进制文件.o——gcc test.c -fPIC -I头文件路径 -c gcc sock.c -I./ -fPIC -c 生成.so库——gcc xxx.o -shared -fPIC -I头文件 -o libmysock.so 共享库名线程库里为-lpthread内存中为libpthread.so gcc sock.o -shared -fPIC -I./ -o libmysock.so 生成库后需要使用-L指定库位置——gcc x.c -I头文件 -L 库路径 -lmysock -o app 如果共享库已经在默认/usr/lib位置编译时无需-L参数 查看程序所依赖的库文件查看未加载成功的库名——ldd 程序名 ldd app 将共享库.so文件复制到/usr/lib/——mv libname.so /usr/lib/ 在linux操作系统下使用ifconfig命令查看本机私有ip地址如果本机写服务器使用本机ip 成功后可以直接使用./程序名运行程序 客户端代码 #includesys/socket.h #includearpa/inet.h #includestdio.h #includestdlib.h #includeunistd.h #includestring.h#define server_ip 192.168.5.133 #define server_port 9090int main() {struct sockaddr_in client_addr;bzero(client_addr,sizeof(client_addr));client_addr.sin_family AF_INET;client_addr.sin_port htons(server_port);client_addr.sin_addr.s_addr inet_addr(server_ip);inet_pton(AF_INET,server_ip,client_addr.sin_addr.s_addr);int client_sock;if((client_socksocket(AF_INET,SOCK_STREAM,0))-1){ perror(sock create failed);return -1; } socklen_t addrlen;char recvv[1024];printf(TCP IO Client Running...\n);addrlen sizeof(client_addr);if((connect(client_sock, (struct sockaddr*)client_addr, addrlen))-1){ perror(failed);return -1; } bzero(recvv,sizeof(recvv));printf(client sock %d\n,client_sock);int lenrecv(client_sock,recvv,sizeof(recvv),0);if(len-1)perror(recv call failed);printf(len %d %s\n,len, recvv);close(client_sock); }服务端代码 #includesock.c #define server_ip 192.168.5.133 #define server_port 9090int main() {struct sockaddr_in client_addr;int server_sock;int client_sock;server_socknet_initializer(NULL,server_port,128);socklen_t addrlen;printf(TCP IO Servers Running...\n);char cip[16];ssize_t len;client_info cf;char buf[1500];char* msgPlease try again\n;char tm[1024];while(1){addrlensizeof(client_addr);client_sockACCEPT(server_sock,(struct sockaddr*)client_addr,addrlen);cf.sockfdclient_sock;inet_ntop(AF_INET,client_addr.sin_addr.s_addr,cf.ip,16);cf.portntohs(client_addr.sin_port);first_response(cf);while((lenRECV(client_sock,buf,sizeof(buf),0))0){if((strcmp(buf,time\n))0){get_time(tm);SEND(client_sock,tm,strlen(tm),MSG_NOSIGNAL);bzero(tm,sizeof(tm));}else{SEND(client_sock,msg,strlen(msg),MSG_NOSIGNAL);}bzero(buf,sizeof(buf));}if(len0){printf(client exit\n);close(client_sock);}}close(server_sock);printf(server done\n);return 0; }成功截图
http://www.w-s-a.com/news/302737/

相关文章:

  • 信宜网站设计公司在线购物商城系统
  • 网站维护是什么样如何制作网站教程视频讲解
  • 网站建设网络推广代理公司wordpress图片防盗链
  • 网站备案关站沈阳男科医院哪家好点
  • 王者荣耀网站建设的步骤网站页面用什么软件做
  • 典型网站开发的流程房屋装修效果图三室一厅
  • 制作微网站多少钱阿里巴巴做网站的电话号码
  • 风铃建站模板安卓手机软件开发外包
  • 深圳市住房和建设局门户网站域名转移影响网站访问吗
  • 做母婴网站赚钱汕头百姓网
  • 那个网站建设好动漫制作技术升本可以升什么专业
  • 网站建设企业响应式网站模板广西建设部投诉网站
  • app营销的特点wordpress优化方案
  • 静安网站建设公司如何编辑wordpress
  • 做网站的职位叫什么问题常州金坛网站建设
  • 保健品网站模板用jsp做的网站前后端交互
  • 网站带后台品牌网页设计图片
  • 保定清苑住房和城乡建设局网站分类信息网站程序
  • 可以做视频推广的网站选择大连网站建设
  • 在线网站开发网站在哪里
  • 建站的步骤上海快速优化排名
  • 招聘网站做一下要多少钱网站设计公司 国际
  • 巩义专业网站建设公司首选seo研究院
  • 大流量网站解决访问量友情链接如何添加
  • 教育网站建设网永康市住房和城乡建设局网站
  • 阿里巴巴官网网站django 做网站的代码
  • 网站建设 军报wordpress 订餐模板
  • 网站虚拟主机 会计处理石家庄站建设费用多少
  • 网站建设 服务内容 费用简述网站开发流程
  • 公司制作网站跟企业文化的关系空间制作网站