Socket 编程是一种用于在网络上进行通信的编程方法,以下代码可以实现在不同主机之间传输数据。
Socket 编程中服务器端和客户端的基本步骤:
服务器端步骤:
1.创建 Socket:
int serverSocket = socket(AF_INET, SOCK_STREAM, 0);
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));
3.监听连接请求:
listen(serverSocket, BACKLOG);
4.接受客户端连接:
int clientSocket = accept(serverSocket, NULL, NULL);
5.接收和发送数据:
使用 recv 函数从客户端接收数据,使用 send 函数向客户端发送数据。
关闭连接:
close(clientSocket);
close(serverSocket);
使用 close 函数关闭连接的套接字。
客户端步骤:
1. 创建 Socket:
int clientSocket = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in serverAddress;
serverAddress.sin_family = AF_INET;
serverAddress.sin_addr.s_addr = inet_addr(SERVER_IP);
serverAddress.sin_port = htons(PORT);
connect(clientSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress));
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"<