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

网站底部留言代码企业营销案例

网站底部留言代码,企业营销案例,网站制作top,职参简历网站测试环境 Receiver: x86 UbuntuSender: arm64 android 发送整型数 C语言和套接字库来发送一个整型变量(int)的客户端程序。 它首先创建一个TCP套接字,然后连接到指定的服务器地址和端口。接着,它将一个整型变量(in…

测试环境

  1. Receiver: x86 Ubuntu
  2. Sender: arm64 android

发送整型数

C语言和套接字库来发送一个整型变量(int)的客户端程序。

  1. 它首先创建一个TCP套接字,然后连接到指定的服务器地址和端口。
  2. 接着,它将一个整型变量(int)转换为网络字节序(大端),
  3. 并使用send()函数发送给服务器。最后,它关闭套接字并退出
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>#define SERVER_IP "127.0.0.1" // 服务器IP地址
#define SERVER_PORT 8888 // 服务器端口号int main(int argc, char* argv[])
{const char *ip = SERVER_IP;if(argc == 2){ip = argv[1];        }fprintf(stdout, "ip:%s\n", ip);int sock; // 套接字描述符struct sockaddr_in server; // 服务器地址结构体int data = 1234; // 要发送的整型数据int n; // 发送或接收的字节数// 创建一个TCP套接字sock = socket(AF_INET, SOCK_STREAM, 0);if (sock == -1){perror("socket failed");exit(1);}// 设置服务器地址结构体memset(&server, 0, sizeof(server));server.sin_family = AF_INET;server.sin_addr.s_addr = inet_addr(ip);server.sin_port = htons(SERVER_PORT);// 连接到服务器if (connect(sock, (struct sockaddr *)&server, sizeof(server)) == -1){perror("connect failed");exit(2);}#if 0// 将整型数据转换为网络字节序(大端)data = htonl(data);// 发送整型数据给服务器n = send(sock, &data, sizeof(data), 0);if (n == -1){perror("send failed");exit(3);}
#elseunsigned char sendbuf[4];sendbuf[0] = data & 0xff;sendbuf[1] = (data >> 8) & 0xff;sendbuf[2] = (data >> 16) & 0xff;sendbuf[3] = (data >> 24) & 0xff;// 发送整型数据给服务器n = send(sock, sendbuf, sizeof(sendbuf), 0);if (n == -1){perror("send failed");exit(3);}
#endif printf("Sent %d bytes to server\n", n);// 关闭套接字close(sock);return 0;
}

这是一个使用C语言和套接字库来接收一个整型变量(int)的服务器程序。

  1. 它首先创建一个TCP套接字,然后绑定到指定的地址和端口。
  2. 接着,它监听客户端的连接请求,并接受一个连接。
  3. 然后,它使用recv()函数接收客户端发送的整型数据,并将其转换为主机字节序(小端或大端)。
  4. 最后,它打印出接收到的数据,并关闭套接字。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>#define SERVER_IP "0.0.0.0" // 服务器IP地址
#define SERVER_PORT 8888 // 服务器端口号int main(int argc, char* argv[])
{int sock, client_sock; // 套接字描述符struct sockaddr_in server, client; // 服务器和客户端地址结构体int data; // 要接收的整型数据int n; // 发送或接收的字节数int len; // 客户端地址长度// 创建一个TCP套接字sock = socket(AF_INET, SOCK_STREAM, 0);if (sock == -1){perror("socket failed");exit(1);}// 设置服务器地址结构体memset(&server, 0, sizeof(server));server.sin_family = AF_INET;server.sin_addr.s_addr = inet_addr(SERVER_IP);server.sin_port = htons(SERVER_PORT);// 绑定套接字到指定的地址和端口if (bind(sock, (struct sockaddr *)&server, sizeof(server)) == -1){perror("bind failed");exit(2);}// 监听客户端的连接请求,设置最大连接数为5if (listen(sock, 5) == -1){perror("listen failed");exit(3);}printf("Waiting for client connection...\n");// 接受一个客户端的连接,返回一个新的套接字描述符len = sizeof(client);client_sock = accept(sock, (struct sockaddr *)&client, (socklen_t*)&len);if (client_sock == -1){perror("accept failed");exit(4);}printf("Connected to client: %s:%d\n", inet_ntoa(client.sin_addr), ntohs(client.sin_port));
#if 0// 接收客户端发送的整型数据n = recv(client_sock, &data, sizeof(data), 0);if (n == -1){perror("recv failed");exit(5);}printf("Received %d bytes from client\n", n);// 将整型数据转换为主机字节序(小端或大端)data = ntohl(data);
#else// 接收客户端发送的整型数据unsigned char recvbuf[4];n = recv(client_sock, recvbuf, sizeof(recvbuf), 0);if (n == -1){perror("recv failed");exit(5);}printf("Received %d bytes from client\n", n);data = (recvbuf[0] & 0xff) | (recvbuf[1] << 8) & 0xff00 | (recvbuf[2]<< 16)&0xff0000 | (recvbuf[3] << 24)&0xff000000;
#endif// 打印出接收到的数据printf("Data: %d\n", data);// 关闭套接字close(client_sock);close(sock);return 0;
}

发送并接受结构体

发送端

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <sys/socket.h>  
#include <arpa/inet.h>  
#include <unistd.h>  #define SERVER_IP "127.0.0.1"// 定义结构体  
struct Data {  int id;  char name[20];  
};  int main(int argc, char* argv[]) {const char* ip = SERVER_IP;if(argc == 2){ip = argv[1];}fprintf(stdout, "ip:%s\n", ip);int sockfd;  struct sockaddr_in server_addr;  struct Data data = { 1, "John" };  // 创建套接字  sockfd = socket(AF_INET, SOCK_STREAM, 0);  if (sockfd < 0) {  perror("socket error");  exit(EXIT_FAILURE);  }  // 设置服务器地址信息  memset(&server_addr, 0, sizeof(server_addr));  server_addr.sin_family = AF_INET;  server_addr.sin_addr.s_addr = inet_addr(ip); // 修改为服务器地址  server_addr.sin_port = htons(8888); // 修改为服务器端口号  // 连接服务器  if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {  perror("connect error");  exit(EXIT_FAILURE);  }  // 发送结构体数据  if (send(sockfd, &data, sizeof(data), 0) < 0) {  perror("send error");  exit(EXIT_FAILURE);  }  printf("Data sent successfully\n");  // 关闭套接字  close(sockfd);  return 0;  
}

接收端

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <sys/socket.h>  
#include <arpa/inet.h>  
#include <unistd.h>  // 定义结构体  
struct Data {  int id;  char name[20];  
};  int main() {  int sockfd;  struct sockaddr_in server_addr, client_addr;  struct Data data;  socklen_t client_len = sizeof(client_addr);  // 创建套接字  sockfd = socket(AF_INET, SOCK_STREAM, 0);  if (sockfd < 0) {  perror("socket error");  exit(EXIT_FAILURE);  }  // 设置服务器地址信息  memset(&server_addr, 0, sizeof(server_addr));  server_addr.sin_family = AF_INET;  server_addr.sin_addr.s_addr = INADDR_ANY;  server_addr.sin_port = htons(8888);  // 绑定套接字到服务器地址  if (bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {  perror("bind error");  exit(EXIT_FAILURE);  }  // 监听连接  if (listen(sockfd, 5) < 0) {  perror("listen error");  exit(EXIT_FAILURE);  }  printf("Waiting for a connection...\n");  // 接受客户端连接  int connfd = accept(sockfd, (struct sockaddr *)&client_addr, &client_len);  if (connfd < 0) {  perror("accept error");  exit(EXIT_FAILURE);  }  printf("Connection accepted from %s:%d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));  // 接收结构体数据  if (recv(connfd, &data, sizeof(data), 0) < 0) {  perror("recv error");  exit(EXIT_FAILURE);  }  printf("Received data: id = %d, name = %s\n", data.id, data.name);  // 关闭套接字和连接  close(connfd);  close(sockfd);  return 0;  
}

介绍四个函数

uint32_t htonl(uint32_t hostlong); // 将一个32位数从主机字节顺序转换为网络字节顺序
uint16_t htons(uint16_t hostshort); // 将一个16位数从主机字节顺序转换为网络字节顺序
uint32_t ntohl(uint32_t netlong); // 将一个32位数从网络字节顺序转换为主机字节顺序
uint16_t ntohs(uint16_t netshort); // 将一个16位数从网络字节顺序转换为主机字节顺序

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

相关文章:

  • 兰州网站seo优化公司营销推广方式有哪些
  • 做网站工作职责全达seo
  • 泰安市疫情最新消息优化营商环境个人心得
  • 企业手机端网站设计模板seo优化的主要任务
  • 163邮箱入口合肥网络推广优化公司
  • 做调查赚钱网站推广类软文案例
  • 上海专业做网站的seo运营是做什么的
  • 橙色企业网站源码网络营销的内容有哪些方面
  • 网站建设 山东南京网络推广平台
  • 网络广告怎么投放sem推广优化
  • 网站建设是什么语言网页设计模板html代码
  • 个人网站可以做淘宝店铺名网站营销软文
  • 想学服装设计seo课程多少钱
  • 做的网站被公安局查出漏洞搜索引擎营销的案例
  • 博彩网站做维护如何做线上推广
  • linux下用python做网站搜索引擎排名谷歌
  • 网站交互图片怎么做的网站如何快速被百度收录
  • 扫二维码做自己网站互联网推广引流
  • vue 做网站磁力狗最佳搜索引擎
  • 怎么制作免费网站教程视频谁能给我个网址
  • 有免费查企业的软件吗优化大师安卓版
  • 网站怎么做域名实名认证草根站长工具
  • 全球速卖通官网入口网站优化推广费用
  • 网站建设犀牛云怎样弄一个自己的平台
  • 商标logo免费设计在线生成seo技术建站
  • 网站地图好处seo排名计费系统
  • 做坑人网站二维码怎样免费推广自己的网站
  • 深圳大公司西安关键词seo
  • 山东个人网站备案域名收录提交入口
  • 最好的微网站建设价格seo是一种利用搜索引擎