Socket实现服务器和客户端(手把手教会)
创始人
2025-01-20 21:32:55
0

😎 作者介绍:我是程序员行者孙,一个热爱分享技术的制能工人。计算机本硕,人工制能研究生。公众号:AI Sun,视频号:AI-行者Sun
🎈 本文专栏:本文收录于《网络编程实战》系列专栏,相信一份耕耘一份收获,我会手把手教分享网络编程实战内容,届时可以拳打字节,脚踢腾讯
🤓 欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。
🖥 随时欢迎您跟我沟通,一起交流,一起成长、进步!

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<<"Faild to create socket"<

Server:

#include  #include  #include  #include  #include  #include   int main(int, char**){     //1.创建套接字     int listen_sock=socket(AF_INET,SOCK_STREAM,0);      if (listen_sock==-1)     {         std::cerr<<"Fiald to create socket"<

相关内容

热门资讯

第三分钟了解!兴动辅助器(辅助... 第三分钟了解!兴动辅助器(辅助挂)总是是有挂(详细辅助可靠教程)1、玩家可以在兴动辅助器软件透明挂俱...
黑科技辅助“九九山城辅助”外挂... 黑科技辅助“九九山城辅助”外挂透视辅助挂(一贯有挂)1、上手简单,内置详细流程视频教学,新手小白可以...
第十分钟辅助挂!创思维激k辅助... 第十分钟辅助挂!创思维激k辅助控制器(辅助挂)确实是有挂(详细辅助黑科技教程)1、游戏颠覆性的策略玩...
黑科技辅助“微信小程序多功能修... 黑科技辅助“微信小程序多功能修改器”外挂透视辅助科技(一贯是真的有挂)1、微信小程序多功能修改器ai...
五分钟辅助挂!微信微乐小程序修... 五分钟辅助挂!微信微乐小程序修改器(辅助挂)切实真的是有挂(详细辅助微扑克教程)1)微信微乐小程序修...
黑科技辅助“禅游游戏辅助”外挂... 黑科技辅助“禅游游戏辅助”外挂透视辅助系统(好像真的有挂)1、完成禅游游戏辅助透视辅助安装,帮助玩家...
1分钟辅助挂!衢州都莱辅助器是... 1分钟辅助挂!衢州都莱辅助器是真的假的(辅助挂)确实有挂(详细辅助力荐教程)1、衢州都莱辅助器是真的...
黑科技辅助挂“顺欣茶楼辅助软件... 黑科技辅助挂“顺欣茶楼辅助软件视频”外挂透视辅助下载(真是存在有挂)1、首先打开顺欣茶楼辅助软件视频...
两分钟辅助挂!心悦俱乐部游戏辅... 两分钟辅助挂!心悦俱乐部游戏辅助(辅助挂)切实真的是有挂(详细辅助详细教程)1、游戏颠覆性的策略玩法...
黑科技辅助挂“花城牌舍辅助系统... 黑科技辅助挂“花城牌舍辅助系统下载”外挂透视辅助工具(本来是有挂)1、不需要AI权限,帮助你快速的进...