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

网站建设属于什么类目成都网站建设著名公司

网站建设属于什么类目,成都网站建设著名公司,手机在线制作表白网站,西安网站设计建设公司 交通在Linux系统上使用C语言进行网络编程时,TCP(Transmission Control Protocol)是最常用的协议之一,它提供了可靠、面向连接的数据传输服务。下面是关于如何使用C语言在Linux系统中进行TCP网络编程的详细步骤与示例。 基本步骤 1.创…

        在Linux系统上使用C语言进行网络编程时,TCP(Transmission Control Protocol)是最常用的协议之一,它提供了可靠、面向连接的数据传输服务。下面是关于如何使用C语言在Linux系统中进行TCP网络编程的详细步骤与示例。

基本步骤

1.创建套接字 (Socket)

        使用 socket() 系统调用创建套接字,指定协议族(AF_INET)和协议类(SOCK_STREAM,表示TCP)。

2.绑定地址和端口 (Bind)

        在服务器端,使用 bind() 将套接字与特定的IP地址和端口号绑定。

3.监听连接 (Listen)

        服务器使用 listen() 函数进入监听状态,等待客户端的连接请求。

4.接受连接 (Accept)

        服务器端使用 accept() 接受客户端的连接请求,并返回一个新的套接字用于与客户端通信。

5.建立连接 (Connect)

        客户端使用 connect() 发起连接请求,向服务器发送连接请求。

6.数据传输 (Send/Recv)

        连接建立后,双方可以使用 send() 和 recv() 进行数据的发送和接收。

7.关闭连接 (Close)

        数据传输完成后,双方需要通过 close() 关闭套接字,释放资源。

示例代码
服务器端代码
服务器端代码需要进行以下操作:

        创建套接字
        绑定IP地址和端口
        监听客户端连接请求
        接受客户端连接并进行数据交互
        关闭连接

#include "public.h"int init_udp_ser(const char *ip, unsigned short port)
{struct sockaddr_in seraddr;seraddr.sin_family = AF_INET;seraddr.sin_port = htons(port);seraddr.sin_addr.s_addr = inet_addr(ip);int sockfd = socket(AF_INET, SOCK_STREAM, 0);if (sockfd < 0){perror("fail socket");return -1;}int ret = bind(sockfd, (struct sockaddr *)&seraddr, sizeof(seraddr));if (ret < 0){perror("fail bind");return -1;}return sockfd;
}int main(int argc, const char *argv[])
{char buff[512] = {0};int sockfd = init_udp_ser("192.168.1.139", 50000);if (sockfd < 0){return -1;}int ret = listen(sockfd, 2);if (ret < 0){perror("fail listen");return -1;}int connfd = accept(sockfd, NULL, NULL);if (connfd < 0){perror("fail accept");return -1;}pid_t pid = fork();if (pid < 0){perror("fail fork");return -1;}if (0 == pid){while (1){memset(buff, 0, sizeof(buff));ssize_t size = recv(connfd, buff, sizeof(buff), 0);if (size == 0){break;}printf("%s\n", buff);}}else if (pid > 0){while (1){memset(buff, 0, sizeof(buff));fgets(buff, sizeof(buff), stdin);ssize_t size = send(connfd, buff, strlen(buff), 0);if (size < 0){perror("fail send");return -1;}}}close(sockfd);close(connfd);return 0;
}

客户端代码
客户端代码需要进行以下操作:

        创建套接字
        连接到服务器
        发送数据并接收回应
        关闭连接

#include "public.h"int init_tcp_cli()
{int sockfd = socket(AF_INET, SOCK_STREAM, 0);if (sockfd < 0){perror("fail socket");return -1;}return sockfd;
}int main(int argc, const char *argv[])
{int sockfd = init_tcp_cli();if (sockfd < 0){return -1;}char buff[512] = {0};struct sockaddr_in seraddr;seraddr.sin_family = AF_INET;seraddr.sin_port = htons(50000);seraddr.sin_addr.s_addr = inet_addr("192.168.1.139");int ret = connect(sockfd, (struct sockaddr *)&seraddr, sizeof(seraddr));if (ret < 0){perror("fail connect");return -1;}pid_t pid = fork();if (pid < 0){perror("fail fork");return -1;}if (0 == pid){while (1){memset(buff, 0, sizeof(buff));fgets(buff, sizeof(buff), stdin);ssize_t size = send(sockfd, buff, strlen(buff), 0);if (size < 0){perror("fail send");return -1;}}}if (pid > 0){while (1){memset(buff, 0, sizeof(buff));ssize_t size = recv(sockfd, buff, sizeof(buff), 0);if (size == 0){break;}printf("RECV:%s\n", buff);}}	close(sockfd);return 0;
}

详细解释

        创建套接字:

                        socket(AF_INET, SOCK_STREAM, 0)

                        创建一个TCP套接字,其中AF_INET表示IPv4协议族,SOCK_STREAM表示流式套接字(TCP协议)。

        绑定地址和端口:

                        bind()将服务器的套接字与指定的IP地址和端口绑定。

        监听连接:

                        listen()使服务器进入监听状态,准备接受客户端的连接请求。

        接受连接:

                        accept()用于接收客户端的连接请求,并返回一个新的套接字,这个新的套接字用于与客户端的数据交互。

        建立连接:

                        客户端通过connect()函数连接到服务器,指定目标服务器的IP和端口。

        数据传输:

                        服务器和客户端使用send()函数发送数据,使用recv()函数接收数据。

        关闭连接:

                        close()用于关闭套接字,释放系统资源。

注意事项

        1.错误处理:示例代码中的 perror() 函数用于在系统调用失败时输出错误信息。
        2.网络字节序:端口号、IP地址等使用网络字节序(大端序)。通过 htons() 和 htonl() 将主机字节序转换为网络字节序。

总结
        通过上面的示例代码,我们可以使用C语言在Linux环境下进行TCP网络编程。TCP协议提供了可靠的、面向连接的通信机制,适用于需要数据可靠传输的应用程序。在实际开发中,需要根据具体的业务需求来处理数据传输、错误处理、连接管理等问题。

http://www.dtcms.com/a/489112.html

相关文章:

  • 基础展示营销型型网站专业建站开发
  • 网站建设的市场情况网站开发实训步骤
  • 网站开发软件开发项目wordpress 页脚加链接
  • 闵行手机网站建设怎么微信公众号上上传wordpress
  • 打开这个网站免费个人网站怎么建立步骤
  • 甘肃建设项目审批权限网站wordpress模板dux
  • 上海机械设备有限公司网站建设网站专业术语中 seo意思是
  • 网站建设中首页模板下载jssdk wordpress
  • 沈阳市建设工程项目管理中心网站湖南网站建设营销推广
  • 网站设计就业前景如何阿里网站建设费用
  • 开封建站公司广州seo优化公司
  • 旅游网站建设步骤网站推广常用方法有哪些
  • 会展网站建设上海建个人网站比较好的公司
  • 网站建设的心得与体会装修网站排名前十名
  • 做古风头像的网站网站建设时间规划表
  • 重庆网站关键词优化推广沈阳网站建设首选龙兴科技
  • 护肤品网站建设方案北京健康宝优化
  • 个人做外贸的网站那个好做什么是静态页面网站
  • 青海市住房和城乡建设厅网站企业网站模板论坛
  • 做古玩的网站做个小程序多少钱
  • 网站上的vR场景贴图怎么做的企业开展网络营销方案
  • 做a手机视频在线观看网站电商网站是什么意思
  • 群网站建设合同如何在微信上建立公众号
  • 电子商务网站建设知识技术支持 东莞网站建设洋酒回收
  • 网站开发用的那些语言课程网站开发过程
  • 购物类网站首页效果图亚洲网站正在建设中
  • 加盟型网站制作内部网络网站怎么做
  • 大连哪家网站公司好找个免费的网站
  • 网站建设seo优化内蒙电子商务的网站建设
  • 推广优化网站排名做一个电商网站多少钱