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

某个产品营销推广方案上海百网优seo优化公司

某个产品营销推广方案,上海百网优seo优化公司,网页布局代码,做社交网站需要什么资质TCP简单链接的编程实现 本文主要介绍TCP应用层的编码实现。 TCP是一种面向连接的、可靠的、基于字节流的传输层协议,它是互联网协议套件(TCP/IP)中的核心协议之一,广泛应用于需要可靠数据传输的场景,如:网…

TCP简单链接的编程实现

本文主要介绍TCP应用层的编码实现。
TCP是一种面向连接的、可靠的、基于字节流的传输层协议,它是互联网协议套件(TCP/IP)中的核心协议之一,广泛应用于需要可靠数据传输的场景,如:网页浏览、文件传输、电子邮件等。
网图

TCP简单链接的编程实现

  • TCP简单链接的编程实现
  • 编码实现
    • tcp简单服务器实现
    • tcp简单客户端实现
  • 实现tcp编程之前需要明确的数据条件
    • tcp服务端
    • TCP客户端
  • 相关函数介绍
    • `int socket(int domain,int type, int protocol);`
      • 参数说明
        • domain(协议族/地址族)
        • type(套接字类型)
        • protocol(协议)
      • 返回值

编码实现

tcp简单服务器实现

//头文件
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <unistd.h>  
#include <arpa/inet.h>#define PORT 8080 //端口号 
#define BUFFER_SIZE 1024 //接收buffer的缓存区大小int main() {  int server_fd;//绑定的套接字int new_socket;  //建立的tcp连接struct sockaddr_in server_address; //服务地址 int addrlen = sizeof(server_address);  struct sockaddr_in address; //建立连接时获取到的客户端地址 int addrlen = sizeof(address);char buffer[BUFFER_SIZE] = {0}; //接受缓冲区 char *response = "Hello from server";  //发送数据// 1.创建套接字  /*AF_INET:域: IPV4:AF_INET;  IPV6: AF_INET6  本地通信:AF_UNIX或AF_LOCAL 底层数据包接口(用于直接访问网络层数据包): AF_PACKETSOCK_STREAM:类型,TCP填SOCK_STREAM;UDP填SOCK_DGRAM;原始套接字填SOCK_RAW0:协议,一般填0(根据 domain 和 type 自动选择合适的协议),原始套接字编程时需填充返回值:成功时:返回一个非负整数,表示套接字的文件描述符;失败时:返回 -1,并设置 errno 以指示错误类型。*/if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {  perror("Socket failed");  exit(EXIT_FAILURE);  }  //2.地址快速重用/*server_fd:套接字描述符SOL_SOCKET:表示选项的级别optname:表示要设置选项的名称&flag:指向设置值的指针len:设置值的大小返回值:成功返回0,失败返回-1,并设置 errno 以指示错误类型*/int flag=1;int len=sizeof(int);if(setsockopt(server_fd,SOL_SOCKET,SO_REUSEADDR,&flag,len)!=0){perror(("setsockopt SO_REUSEADDR failed"));exit(EXIT_FAILURE);}//2.绑定套接字到端口  (设置域,ip,端口)address.sin_family = AF_INET;  address.sin_addr.s_addr = INADDR_ANY;  //INADDR_ANY 的值是 0x00000000,表示 0.0.0.0,这是一个特殊的 IPv4 地址。//当将套接字绑定到 INADDR_ANY 时,服务器会监听所有本地网络接口(包括环回接口 127.0.0.1 和所有物理网卡的 IP 地址)address.sin_port = htons(PORT);  //3.绑定if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {  perror("Bind failed");  close(server_fd);  exit(EXIT_FAILURE);  }  // 4.监听连接  if (listen(server_fd, 3) < 0) {  //3:backlog正在三次握手的客户端链表的上限=2*backlog+1perror("Listen failed");  close(server_fd);  exit(EXIT_FAILURE);  }  printf("Server listening on port %d\n", PORT);  // 5.接受连接  if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) {  perror("Accept failed");  close(server_fd);  exit(EXIT_FAILURE);  }  // 读取客户端发送的数据  read(new_socket, buffer, BUFFER_SIZE);  printf("Message from client: %s\n", buffer);  // 发送响应给客户端  send(new_socket, response, strlen(response), 0);  printf("Response sent to client\n");  // 关闭套接字  close(new_socket);  close(server_fd); return 0;}

tcp简单客户端实现

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <unistd.h>  
#include <arpa/inet.h>  #define PORT 8080  
#define BUFFER_SIZE 1024  int main() {  int sock = 0;  struct sockaddr_in serv_addr;  char *message = "Hello from client";  char buffer[BUFFER_SIZE] = {0};  // 创建套接字  if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {  perror("Socket creation error");  return -1;  }  serv_addr.sin_family = AF_INET;  serv_addr.sin_port = htons(PORT);  // 将IPv4地址从字符串转换为二进制形式  if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) {  perror("Invalid address/ Address not supported");  return -1;  }  // 连接到服务器  if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {  perror("Connection Failed");  return -1;  }  // 发送消息给服务器  send(sock, message, strlen(message), 0);  printf("Message sent to server\n");  // 读取服务器的响应  read(sock, buffer, BUFFER_SIZE);  printf("Response from server: %s\n", buffer);  // 关闭套接字  close(sock);  return 0;  
}  

实现tcp编程之前需要明确的数据条件

tcp服务端

(1)发送端口号
(2)接受数据的缓冲区
(3)发送端ip地址
(4)要发送的数据
(5)要设置三次握手的客户端链表的上限值

TCP客户端

(1)接收端口号
(2)接受数据的缓冲区
(3)接收端ip地址
(4)要发送的数据

相关函数介绍

int socket(int domain,int type, int protocol);

socket 函数是网络编程中用于创建套接字的核心函数。它定义在 <sys/socket.h> 头文件中,用于创建一个通信端点(套接字),并返回一个文件描述符,以便后续的通信操作(如绑定、监听、连接、发送和接收数据等)。

参数说明

domain(协议族/地址族)

指定通信的协议族,常见的值包括:

  • AF_INET:IPv4 协议族(用于 TCP/IPv4 和 UDP/IPv4)。
  • AF_INET6:IPv6 协议族(用于TCP/IPv6 和 UDP/IPv6)。
  • AF_UNIX 或 AF_LOCAL:本地通信(用于同一台机器上的进程间通信)。
  • AF_PACKET:底层数据包接口(用于直接访问网络层数据包)。
type(套接字类型)

指定套接字的类型
SOCK_STREAM:面向连接的流套接字(如 TCP)。
SOCK_DGRAM:无连接的数据报套接字(如 UDP)。
SOCK_RAW:原始套接字(用于直接访问网络层协议,如 ICMP)。

protocol(协议)

指定具体的协议,通常设置为 0,表示根据 domain 和 type 自动选择合适的协议。

  • 如果 domain 是 AF_INET 且 type 是 SOCK_STREAM,则默认使用 IPPROTO_TCP(TCP 协议)。
  • 如果 domain 是 AF_INET 且 type 是 SOCK_DGRAM,则默认使用 IPPROTO_UDP(UDP 协议)。
  • 如果使用原始套接字(SOCK_RAW),则需要显式指定协议,如 IPPROTO_ICMP。

返回值

  • 成功时:返回一个非负整数,表示套接字的文件描述符。
  • 失败时:返回 -1,并设置 errno 以指示错误类型。
http://www.dtcms.com/wzjs/481219.html

相关文章:

  • 建网站需要哪些费用关键词搜索排名软件
  • 中山企业手机网站建设找培训机构的平台
  • 免费可商用图片素材网站网站推广公司排行榜
  • wordpress用什么编写的windows优化大师下载
  • 七台河做网站seo教程培训
  • 免费在线网站建设同城推广平台有哪些
  • 网站程序复制网络服务提供者不履行法律行政法规规定
  • 高端建站的公司餐饮管理培训课程
  • 公司简介图片模板排名优化是怎么做的
  • 江苏建设行业证书编号查询网站百度网页游戏大厅
  • wordpress数据库设计优缺点seo网站关键词优化费用
  • 大学生创业网站建设方案营销助手下载app下载
  • 重庆网站建设公司友情链接交易平台源码
  • 做编程网站有哪些方面爱站网关键词查询
  • 选择扬中网站建设做电商一个月能挣多少钱
  • 手机网站制作服务机构网络舆情信息
  • 网站建设比较合理的流程千锋教育前端学费多少
  • 制作公司工作网站崇左网站建设
  • 专业做外贸英文公司网站seo全网营销公司
  • 网站建设可以帮助企业新手怎么开始做电商
  • 苏州园区做网站网购平台推广方案
  • 某俄文网站企业关键词大全
  • 济南产品网站建设外包线上运营推广
  • 网站建设的活怎么接百度seo优化推广
  • 上海徽与章网站建设宗旨廊坊关键词优化排名
  • 重庆水务建设项目集团网站自己怎么做网站推广
  • Discuz网站制作教程百度推广优化师培训
  • 深圳消防公司排行seo优化百度技术排名教程
  • 在哪里做公司网站教育培训网站设计
  • 软件外包业务seo网站推广招聘