您的位置:首页 > 汽车 > 时评 > 用于制作网页的工具软件_o2o电子商务模式的特点_宁波seo网络优化公司_福州短视频seo网站

用于制作网页的工具软件_o2o电子商务模式的特点_宁波seo网络优化公司_福州短视频seo网站

2025/2/14 23:49:54 来源:https://blog.csdn.net/m0_74156325/article/details/145067137  浏览:    关键词:用于制作网页的工具软件_o2o电子商务模式的特点_宁波seo网络优化公司_福州短视频seo网站
用于制作网页的工具软件_o2o电子商务模式的特点_宁波seo网络优化公司_福州短视频seo网站

一,服务端

        1.创建socket套接字,用于网络通信,同一台机器上的进程也可以通过本地套接字进行通信

       //1.socket

        s_fd = socket(AF_INET,SOCK_STREAM,0);

        if(s_fd == -1){

                perror("socket");

                exit(-1);

        }

        //server address

        s_addr.sin_family = AF_INET;

        s_addr.sin_port = htons(atoi(argv[2]));

        inet_aton(argv[1], &s_addr.sin_addr);

        2.bind函数:int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

sockfd:        socket文件描述符 

addr:            构造出IP地址 + 端口号

addrlen:       sizeof(addr)长度

返回值:         成功返回0,失败返回-1, 设置errno

作用: 为套接字分配名称    

当使用socket创建套接字时,它存在于名称空间(地址族)中,但没有为其分配地址。 bind() 将 addr 指定的地址分配给文件描述符 sockfd 引用的socket。

bind(s_fd,(struct sockaddr *)&s_addr, sizeof(struct sockaddr_in));

        3.listen()监听函数:在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变为被动连接。listen函数在一般在调用bind之后-调用accept之前调用。

listen(s_fd,10);

printf("wait\n");

        4.accept函数:

accept()接受一个客户端的连接请求,并返回一个新的套接字(被动监听客户端的三次握手连接请求,三次握手成功即建立连接成功)。所谓“新的”就是说这个套接字与socket()返回的用于监听和接受客户端的连接请求的套接字不是同一个套接字。与本次接受的客户端的通信是通过在这个新的套接字上发送和接收数据来完成的。原文链接:https://blog.csdn.net/weixin_43743711/article/details/106879165
 

主代码:

while(1){

        c_fd = accept(s_fd, (struct sockaddr *)&c_addr,&clen);

        if(c_fd == -1){

                perror("accept");

        }

        mark++;

        printf("get connect:%s\n",inet_ntoa(c_addr.sin_addr));

        if(fork() == 0){

                if(fork() == 0){

                        while(1){

                                sprintf(msg,"welcome No.%d client", mark);

                                write(c_fd,msg,strlen(msg));

                                sleep(2);

                        }

                }

                //5.read

                while(1){

                        memset(readBUF,0,sizeof(readBUF));

                        n_read = read(c_fd,readBUF,128);

                        if(n_read == -1)

                        {

                                perror("read");

                        }

                        else{

                                printf("\n get message:%d, %s\n",n_read,readBUF);

                        }

                }

              break;

        }

}

        头文件有:

#include<stdio.h>

#include<sys/types.h>

#include<sys/socket.h>

#include<netinet/in.h>

#include<arpa/inet.h>

#include<stdlib.h>

#include<string.h>

#include<unistd.h>

        效果图:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com