Socket实现服务器和客户端(手把手教会)

07-17 1125阅读

😎 作者介绍:我是程序员行者孙,一个热爱分享技术的制能工人。计算机本硕,人工制能研究生。公众号:AI Sun,视频号:AI-行者Sun

🎈 本文专栏:本文收录于《网络编程实战》系列专栏,相信一份耕耘一份收获,我会手把手教分享网络编程实战内容,届时可以拳打字节,脚踢腾讯

🤓 欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。

🖥 随时欢迎您跟我沟通,一起交流,一起成长、进步!

Socket实现服务器和客户端(手把手教会)

Socket实现服务器和客户端(手把手教会)

Socket 编程是一种用于在网络上进行通信的编程方法,以下代码可以实现在不同主机之间传输数据。 

Socket 编程中服务器端和客户端的基本步骤:
服务器端步骤:

1.创建 Socket:

int serverSocket = socket(AF_INET, SOCK_STREAM, 0);
  • 使用 socket 函数创建一个套接字。
  • AF_INET 表示使用 IPv4 地址族。
  • SOCK_STREAM 表示使用 TCP 协议,如果使用 UDP,则为 SOCK_DGRAM。

    2.绑定地址和端口:

       struct sockaddr_in serverAddress;
       serverAddress.sin_family = AF_INET;
       serverAddress.sin_addr.s_addr = INADDR_ANY;
       serverAddress.sin_port = htons(PORT);
       bind(serverSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress));
    • 初始化服务器地址结构体 sockaddr_in,设置 IP 地址和端口。
    • 使用 bind 函数将套接字绑定到指定的地址和端口。

      3.监听连接请求:

         listen(serverSocket, BACKLOG);
      • 使用 listen 函数开始监听连接请求。
      • BACKLOG 参数指定连接请求队列的最大长度。

        4.接受客户端连接:

           int clientSocket = accept(serverSocket, NULL, NULL);
        • 使用 accept 函数接受客户端的连接请求。
        • 返回一个新的套接字 clientSocket,用于与客户端通信。

          5.接收和发送数据:

                  使用 recv 函数从客户端接收数据,使用 send 函数向客户端发送数据。

          关闭连接:

             close(clientSocket);
             close(serverSocket);

          使用 close 函数关闭连接的套接字。

          客户端步骤:

          1. 创建 Socket:

            int clientSocket = socket(AF_INET, SOCK_STREAM, 0);
          • 使用 socket 函数创建一个套接字。
          • 设置服务器地址和端口:
               struct sockaddr_in serverAddress;
               serverAddress.sin_family = AF_INET;
               serverAddress.sin_addr.s_addr = inet_addr(SERVER_IP);
               serverAddress.sin_port = htons(PORT);
            • 初始化服务器地址结构体 sockaddr_in,设置服务器的 IP 地址和端口。
            • 连接到服务器:
                connect(clientSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress));
              • 使用 connect 函数连接到服务器。
              • 发送和接收数据:
              • 使用 send 函数向服务器发送数据,使用 recv 函数从服务器接收数据。
              • 关闭连接:
                 close(clientSocket);

                使用 close 函数关闭连接的套接字。

                解决分包、粘包问题

                Socket实现模拟TCP通信粘包问题-CSDN博客

                Client:

                #include 
                #include 
                #include 
                #include 
                #include 
                #include 
                int main(){
                    //1.创建socket
                    int client_sock=socket(AF_INET,SOCK_STREAM,0);
                    if (client_sock==-1)
                    {
                        std::cerr
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]