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

郑州网站建设七彩科技建设电子商务网站的好处

郑州网站建设七彩科技,建设电子商务网站的好处,电商公司运营策略,58同城西安网站建设以下是 Linux 网络通信核心函数的详细参数说明及示例代码,涵盖 TCP/UDP 的关键接口: **1. socket() - 创建套接字 函数原型 int socket(int domain, int type, int protocol);参数说明 参数说明domain协议族:AF_INET (IPv4)、AF_INET6 (IP…

以下是 Linux 网络通信核心函数的详细参数说明及示例代码,涵盖 TCP/UDP 的关键接口:


**1. socket() - 创建套接字

函数原型
int socket(int domain, int type, int protocol);
参数说明
参数说明
domain协议族:AF_INET (IPv4)、AF_INET6 (IPv6)、AF_UNIX (本地通信)
type套接字类型:SOCK_STREAM (TCP)、SOCK_DGRAM (UDP)
protocol通常填 0,由系统自动选择(如 TCP 或 UDP)
示例
// 创建 TCP 套接字
int tcp_sock = socket(AF_INET, SOCK_STREAM, 0);
if (tcp_sock == -1) {perror("socket");exit(EXIT_FAILURE);
}// 创建 UDP 套接字
int udp_sock = socket(AF_INET, SOCK_DGRAM, 0);

**2. bind() - 绑定地址

函数原型
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
参数说明
参数说明
sockfd套接字描述符
addr指向 sockaddr_in 结构体的指针(存储 IP 和端口信息)
addrlen地址结构体的长度(sizeof(struct sockaddr_in)
示例
struct sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;                   // IPv4
addr.sin_port = htons(8080);                 // 端口 8080(转换为网络字节序)
addr.sin_addr.s_addr = htonl(INADDR_ANY);    // 绑定到所有本地 IPif (bind(sockfd, (struct sockaddr*)&addr, sizeof(addr)) == -1) {perror("bind");close(sockfd);exit(EXIT_FAILURE);
}

**3. listen() - 监听连接(TCP)

函数原型
int listen(int sockfd, int backlog);
参数说明
参数说明
sockfd已绑定的套接字描述符
backlog等待连接队列的最大长度(通常设为 5~10)
示例
if (listen(sockfd, 5) == -1) {perror("listen");close(sockfd);exit(EXIT_FAILURE);
}

**4. accept() - 接受连接(TCP)

函数原型
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
参数说明
参数说明
sockfd处于监听状态的套接字描述符
addr用于保存客户端地址信息的结构体指针(可为 NULL
addrlen地址结构体的长度指针(可为 NULL
示例
struct sockaddr_in client_addr;
socklen_t client_len = sizeof(client_addr);
int client_fd = accept(sockfd, (struct sockaddr*)&client_addr, &client_len);
if (client_fd == -1) {perror("accept");close(sockfd);exit(EXIT_FAILURE);
}printf("Client connected from %s:%d\n",inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));

**5. connect() - 连接服务器(TCP/UDP)

函数原型
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
示例(TCP)
struct sockaddr_in server_addr;
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8080);
server_addr.sin_addr.s_addr = inet_addr("192.168.1.100");  // 服务器 IPif (connect(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) {perror("connect");close(sockfd);exit(EXIT_FAILURE);
}

**6. send() / recv() - 发送/接收数据(TCP)

函数原型
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
参数说明
参数说明
sockfd已连接的套接字描述符
buf数据缓冲区指针
len数据长度
flags控制标志(通常填 0
示例
// 发送数据
char *msg = "Hello, Server!";
if (send(client_fd, msg, strlen(msg), 0) == -1) {perror("send");
}// 接收数据
char buffer[1024];
ssize_t n = recv(client_fd, buffer, sizeof(buffer), 0);
if (n == -1) {perror("recv");
} else if (n == 0) {printf("Connection closed\n");
} else {buffer[n] = '\0';printf("Received: %s\n", buffer);
}

**7. sendto() / recvfrom() - 发送/接收数据(UDP)

函数原型
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);
示例
// UDP 发送数据到指定地址
struct sockaddr_in dest_addr;
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(8080);
dest_addr.sin_addr.s_addr = inet_addr("192.168.1.100");sendto(udp_sock, "Hello", 5, 0,(struct sockaddr*)&dest_addr, sizeof(dest_addr));// UDP 接收数据并获取来源地址
struct sockaddr_in src_addr;
socklen_t src_len = sizeof(src_addr);
char buffer[1024];
recvfrom(udp_sock, buffer, sizeof(buffer), 0,(struct sockaddr*)&src_addr, &src_len);

**8. close() - 关闭套接字

函数原型
int close(int sockfd);
示例
close(client_fd);  // 关闭客户端套接字
close(server_fd);  // 关闭服务端套接字

**9. setsockopt() - 设置套接字选项

函数原型
int setsockopt(int sockfd, int level, int optname,const void *optval, socklen_t optlen);
示例(设置地址重用)
int reuse = 1;
if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) == -1) {perror("setsockopt");
}

完整 TCP 服务端示例

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>int main() {int server_fd = socket(AF_INET, SOCK_STREAM, 0);if (server_fd == -1) {perror("socket");exit(EXIT_FAILURE);}// 设置地址重用int reuse = 1;setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse));struct sockaddr_in addr;memset(&addr, 0, sizeof(addr));addr.sin_family = AF_INET;addr.sin_port = htons(8080);addr.sin_addr.s_addr = htonl(INADDR_ANY);if (bind(server_fd, (struct sockaddr*)&addr, sizeof(addr)) == -1) {perror("bind");close(server_fd);exit(EXIT_FAILURE);}if (listen(server_fd, 5) == -1) {perror("listen");close(server_fd);exit(EXIT_FAILURE);}printf("Server listening on port 8080...\n");while (1) {struct sockaddr_in client_addr;socklen_t client_len = sizeof(client_addr);int client_fd = accept(server_fd, (struct sockaddr*)&client_addr, &client_len);if (client_fd == -1) {perror("accept");continue;}char *response = "HTTP/1.1 200 OK\r\nContent-Length: 12\r\n\r\nHello World!";send(client_fd, response, strlen(response), 0);close(client_fd);}close(server_fd);return 0;
}

总结

  • 函数协作流程
    • TCP 服务端socket()bind()listen()accept()send()/recv()close()
    • TCP 客户端socket()connect()send()/recv()close()
    • UDP 通信socket()bind()(可选) → sendto()/recvfrom()close()
  • 关键细节
    • 字节序转换:使用 htons(), ntohs() 等函数处理端口和 IP 地址。
    • 错误处理:所有函数调用后需检查返回值。
    • 资源释放:通信结束后必须调用 close() 关闭套接字。

文章转载自:

http://qd16l00K.Lbgfz.cn
http://TSmmtoiB.Lbgfz.cn
http://RN9QAQwh.Lbgfz.cn
http://SH6gdgwB.Lbgfz.cn
http://QRM3iHpC.Lbgfz.cn
http://H5fps8Vv.Lbgfz.cn
http://nrTkGc1L.Lbgfz.cn
http://p6Bjhr3R.Lbgfz.cn
http://BUEoqjuo.Lbgfz.cn
http://SZghmeF6.Lbgfz.cn
http://UHXO8BPF.Lbgfz.cn
http://NESW7BPh.Lbgfz.cn
http://5Qd0j8ZQ.Lbgfz.cn
http://tpb48CAT.Lbgfz.cn
http://qrRMkbZO.Lbgfz.cn
http://nI4Qmuz2.Lbgfz.cn
http://RNkRkRHS.Lbgfz.cn
http://RmMDq2e6.Lbgfz.cn
http://7oPcYRvW.Lbgfz.cn
http://hEdXVC1Y.Lbgfz.cn
http://7I8LOKf9.Lbgfz.cn
http://WK2YL1w5.Lbgfz.cn
http://xZcW51hX.Lbgfz.cn
http://MazJyaZG.Lbgfz.cn
http://xtQcmEDe.Lbgfz.cn
http://TFiav3eX.Lbgfz.cn
http://VRrPgEBH.Lbgfz.cn
http://HYEVMre4.Lbgfz.cn
http://jCXCjqdP.Lbgfz.cn
http://j5tEFkln.Lbgfz.cn
http://www.dtcms.com/wzjs/769173.html

相关文章:

  • 怎么做国外的网站 卖东西wordpress文章目录树
  • 深圳罗湖网站设计公司价格南江移动网站建设
  • 微信彩票网站网站建设如何在南美做网站推广
  • 网站建设的费用包括哪些内容如何申请免费企业邮箱
  • 免费网站推广入口上海建设工程检测登记的网站
  • .tv可以做门户网站不建设一个商城式网站可以吗
  • 软文发布网站网站域名解绑
  • 手工艺品网站建设侧胡顺昆明seo排名外包
  • 中国建设银行互联网网站贡井移动网站建设
  • 网站图标在哪里修改360免费wifi官网
  • 北京动力 网站建设网站开发在无形资产中
  • 私人网站制作 个人使用洛阳霞光网络建站
  • 温州建站费用建设公司董事长致辞网站范文
  • 辽宁省住房城乡建设厅网站中国上海门户网站公众号
  • 学做面包网站免费网站空间 asp.net
  • 自助网站建设哪家效益快青岛建设公司网站建设
  • 阿里云做网站用哪个镜像营销型网站排
  • 小蘑菇网站建设下载wordpress单击右键提示
  • 重庆未来科技网站建设小程序直播功能
  • 网站发布后打不开万网网站编辑
  • ssh建wordpress绍兴百度seo公司
  • 淘宝客怎么建立网站建自己的网站多少钱
  • 网站建设管理工作自查报告做企业网站有什么用
  • 微网站开发流程小程序注册需要什么资料
  • 怎么做网站静态布局昆明专业网站制作公司
  • 桓台响应式网站建设微商来官网登录
  • 企业为何做网站涿州市查建设局网站
  • 用rp怎样做网站网站建设沟通
  • 河北省建设厅网站重新安装安康企业网站建设价格
  • 网站建设广告宣传素材陕西网站推广公司