cpp socket网络编程 server端和client端

Cpp 投稿 41000 0 评论

cpp socket网络编程 server端和client端

  • TCP

server端:

#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <arpa/inet.h>#define SERVER_PORT 8888#define SERVER_IP "192.168.1.100"int main( {

// 1. 创建监听套接字

int fd = socket(AF_INET, SOCK_STREAM, 0;if (fd == -1    {        perror("fail fo socket!";return -1;    }    printf("create socket fd[%d] success!\n";

// 2. 绑定监听套接字到本地IP和port

struct sockaddr_in addr;    addr.sin_family = AF_INET;    addr.sin_port = htons(SERVER_PORT;    inet_pton(AF_INET, SERVER_IP, &addr.sin_addr;int ret = bind(fd, (struct sockaddr*&addr, sizeof(addr;if (ret == -1    {        perror("fail to bind!";return -2;    }    printf("bind success!\n";

// 3. 设置监听ret = listen(fd, 128;if (ret == -1    {        perror("fail to listen!";return -3;    }    printf("listen success!\n";

// 4. 阻塞等待,等待连接到达,连接成功后返回通信用的套接字

struct sockaddr_in c_addr;int c_addr_len = 0;int c_fd = accept(fd, (struct sockaddr*&c_addr, &c_addr_len;if (c_fd == -1    {        perror("fail to accept!";return -4;    }    printf("accept success!\n";

// 5. 开始通信

char buff[1024];char ip[32];    memset(buff, 0, sizeof(buff;    memset(ip, 0, sizeof(ip;int len = read(c_fd, buff, sizeof(buff;if (len > 0    {        printf("client %s:%d >> %s\n", inet_ntop(AF_INET, &c_addr.sin_addr, ip , sizeof(ip, ntohs(c_addr.sin_port, buff;        write(c_fd, buff, len;    }else if (len == 0    {        printf("connect close!";}else{        printf("connect fail!";    }

// 6. 关闭套接字

   close(fd;    close(c_fd;return 0; }

client端:

#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <arpa/inet.h>#define SERVER_PORT 8888#define SERVER_IP "192.168.1.100"int main( {

// 1. 创建通信套接字

int fd = socket(AF_INET, SOCK_STREAM, 0;if (fd == -1    {        perror("fail fo socket!";return -1;    }    printf("create socket success!\n";

// 2. 连接服务器

struct sockaddr_in addr;    addr.sin_family = AF_INET;    addr.sin_port = htons(SERVER_PORT;    inet_pton(AF_INET, SERVER_IP, &addr.sin_addr;int ret = connect(fd, (struct sockaddr*&addr, sizeof(addr;if (fd == -1    {        perror("fail to connect!";return -2;    }    printf("connect success!\n";

// 3. 通信

char buff[1024];char ip[32];    sprintf(buff, "Hello, this is a test connection with the server!";int len = send(fd, buff, strlen(buff + 1, 0;    memset(buff, 0, sizeof(buff;    memset(ip, 0, sizeof(ip;    len = recv(fd, buff, sizeof(buff, 0;if (len > 0    {        printf("server %s:%d >> %s\n", inet_ntop(AF_INET, &addr.sin_addr, ip , sizeof(ip, ntohs(addr.sin_port, buff;    }else if (len == 0    {        printf("connect close!\n";    }else{        perror("recv fail!\n";    }

// 4. 关闭套接字

close(fd;return 0; }

编程笔记 » cpp socket网络编程 server端和client端

赞同 (173) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽