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

社区网站如何做/网络营销方案设计

社区网站如何做,网络营销方案设计,vs做网站视频教程,农产品宣传推广方案一.服务器端 创建套接字。创建失败返回-1;创建成功返回套接字描述符。套接字描述符和文件描述符一样,是一个非负整数。 int socket(int domain, int type, int protocol) 1.domain:套接字中使用的协议族(Protocol Family&#xf…

一.服务器端

  1. 创建套接字。创建失败返回-1;创建成功返回套接字描述符。套接字描述符和文件描述符一样,是一个非负整数。
    int socket(int domain, int type, int protocol)

    1.domain:套接字中使用的协议族(Protocol Family)信息。目前仅支持AF_INET格式,即ARPA Internet地址格式。
    --AF_LOCAL(AF_UNIX):用于本机内进程之间的通信
    --AF_INET:使用IPv4的TCP/IP协议
    --AF_INET6:使用IPv6的TCP/IP协议

    2.type:套接字数据传输类型信息。
    --SOCK_STREAM:TCP流
    --SOCK_DGRAM:UDP数据报
    --SOCK_RAM:原始套接字

    3.protocol:表示通过参数domain指定的协议族和参数type指定的套接字类型来确定使用的协议。当创建原始套接字时,系统无法唯一地确定协议,此时就需要使用该参数指定所使用的协议。

  2. 函数bind:将套接字描述符socket与套接字实体(包含IP地址、端口号等)的地址address捆绑。
    int bind(int socket, const struct sockaddr * address, socklen_t addrss_len)

    socket:已经建立的套接字描述符。
    address:一个sockaddr结构体类型的指针,该结构中包含了要结合的地址和端口号。
    address_len:address缓冲区的长度。

  3. 函数listen:主动连接的套接字变为被动连接的套接口从而成为一个服务器进程。
    int listen(int sockfd, int backlog)

    backlog:规定内核应该为相应套接字排队的最大连接数

  4. 函数accept:从等待连接的套接字队列中取出第一个连接请求,创建一个套接字并返回其描述符(期间会获取客户端IP等信息)。
    accept(serv_sock, (struct sockaddr *)&clnt_addr, &clnt_addr_size)

     

  5.  发送/接收信息:write和read函数。

    ssize_t write(int fd, const void *buf, size_t nbytes);
    ssize_t read(int fd, void *buf, size_t nbytes);

    fd:数据传输对象的套接字描述符(文件描述符)
    buf:保存要传输数据的缓冲地址值
    nbytes:要传输数据的字节数

二.客户端

  1. 创建套接字
  2. 函数connect:向套接字注册目标IP和端口信息。如果是TCP套接字,将激发TCP的三次握手过程。该函数仅在连接建立成功或出错时才返回,否则该函数被阻塞。
    int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen)

     

  3. 发送/接收信息。

三.查看连接信息: netstat -an | grep 8500,其中8500是端口号。


 服务器代码:

#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <assert.h>int main(int argc, char *argv[]){int serv_sock = socket(AF_INET, SOCK_STREAM, 0); //<1>assert(serv_sock!=-1);struct sockaddr_in serv_addr;memset(&serv_addr, 0, sizeof(serv_addr));serv_addr.sin_family = AF_INET;serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);//INADDR_ANY:监听本机的所有网卡serv_addr.sin_port = htons(8500);//8500:端口号assert(!bind(serv_sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr))); //<2>assert(!listen(serv_sock, 5)); //<3>struct sockaddr_in clnt_addr; socklen_t clnt_adr_sz = sizeof(clnt_addr);//1.单次:向对方发一条消息。/*int clnt_sock = accept(serv_sock, (struct sockaddr *)&clnt_addr, &clnt_adr_sz); //<4>assert(clnt_sock!=-1);char message[] = "Hello world!";write(clnt_sock, message, sizeof(message)); //<5>close(clnt_sock);*///2.多次:接收对方发来的消息再把该消息发给对方。int str_len;char messag[1024];for (int i = 0; ; i++){int clnt_sock = accept(serv_sock, (struct sockaddr *)&clnt_addr, &clnt_adr_sz); //<4>assert(clnt_sock != -1);printf("Connected client %d.\n",i+1);while ((str_len = read(clnt_sock, messag, 1024)) != 0)write(clnt_sock, messag, str_len); //<5>close(clnt_sock);}close(serv_sock);return 0;
}

客户端代码:

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <assert.h>int main(int argc, char *argv[]){ int sock = socket(AF_INET, SOCK_STREAM, 0); //<1>用SOCK_DGRAM就变成有连接的UDPassert(sock != -1);struct sockaddr_in serv_addr;memset(&serv_addr, 0, sizeof(serv_addr));serv_addr.sin_family = AF_INET;serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");serv_addr.sin_port = htons(8500);assert(connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) != -1); //<2>char message[1024];//1.单次:直接接收对方的信息。/*assert(read(sock, message, sizeof(message) - 1) != -1); //<3>printf("Message from server: %s\n", message);*///2.多次:向对方发送信息再接收。while (1){fputs("Input message(Q to quit):", stdout);fgets(message, 1024, stdin);if (!strcmp(message, "q\n") || !strcmp(message, "Q\n"))break;write(sock, message, strlen(message)); //<3>int str_len = read(sock, message, 1024 - 1);message[str_len] = 0;printf("Message from server:%s", message);}close(sock);return 0;
}

[参考1][参考2]

http://www.jmfq.cn/news/4884751.html

相关文章:

  • ppt做书模板下载网站/广告联盟平台排名
  • 音乐网站怎么做外链/外贸网站推广方式
  • 个人网站备案建设方案书/电脑培训班一般需要多少钱
  • 网站策划资料方案/5月疫情最新消息
  • 营销型网站建设公司哪家好/网站到首页排名
  • 辽宁省工程造价信息/seo修改器
  • 做风筝网站/国外免费建站网站搭建
  • 建筑工程网站模板/站长工具seo综合查询下载
  • 网站建设的总体设计/外贸网站平台哪个好
  • 做intor的网站/宁波靠谱营销型网站建设
  • 网站备案目的/网站改进建议有哪些
  • 网站建设 唐山/网络整合营销公司
  • 重庆网站供奉战犯/seo手机优化软件哪个好用
  • 网站建设微信软文/怎么开网店
  • 如何用ps做网站平面图/论坛推广平台有哪些
  • 动态网站特点/成人电脑基础培训班
  • 营销网站的设计思路/贵州seo学校
  • 向客户介绍网站建设的话术/网络营销推广方法
  • asp 网站源码 下载/站长工具域名
  • 买了域名怎么做自己的网站/室内设计培训哪个机构比较好
  • 网站开发团队职能/灰色产业推广引流渠道
  • 申请做网站要什么局/在线网站分析工具
  • 动态网站开发知识/搜索引擎大全网址
  • 医院网站前置审批文件/百度怎么提交收录
  • wordpress服装主题/百度搜索引擎优化详解
  • 装饰公司管理系统/如何做seo整站优化
  • 柳南区新闻/郑州百度关键词seo
  • 公司网站建设实施方案/新闻发稿平台
  • 网站 如何做 同时在线/东莞搜索优化
  • 青岛做网站建设哪家好/销售新人怎么找客户