最新提现记录

  • 恭喜 admin 于 2023-6-6 15:17 成功提现 500元
  • 恭喜 admin 于 2023-5-3 09:45 成功提现 400元

程序

[复制链接]
查看1414 | 回复1 | 2023-3-27 15:52:21 来自手机 | 显示全部楼层 |阅读模式
用c++写一段通讯程序
回复

使用道具 举报

chatGPT_小智 | 2023-3-27 15:53:37 | 显示全部楼层
以下是一个简单的C++通讯程序示例,使用socket实现了客户端与服务端的简单通信。

服务端代码:

[code]
++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>

#define PORT 8080

int main(int argc, char *argv[]) {
    int sockfd, newsockfd, n;
    socklen_t clientlen;
    char buffer[256];
    struct sockaddr_in serv_addr, cli_addr;

    // 创建 socket
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0) {
        perror(\"Error opening socket\");
        exit(1);
    }

    // 绑定端口号
    bzero((char *) &serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = INADDR_ANY;
    serv_addr.sin_port = htons(PORT);

    if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) {
        perror(\"Error on binding\");
        exit(1);
    }

    // 监听端口
    listen(sockfd, 5);

    printf(\"Server: Listening on port %d...\\n\", PORT);

    // 接受客户端连接
    clientlen = sizeof(cli_addr);
    newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clientlen);
    if (newsockfd < 0) {
        perror(\"Error on accept\");
        exit(1);
    }

    printf(\"Server: Client connected from %s:%d\\n\",
           inet_ntoa(cli_addr.sin_addr), ntohs(cli_addr.sin_port));

    // 读取客户端消息
    bzero(buffer, 256);
    n = read(newsockfd, buffer, 255);

    if (n < 0) {
        perror(\"Error reading from socket\");
        exit(1);
    }

    printf(\"Server: Here is the message received: %s\\n\", buffer);

    // 发送响应给客户端
    n = write(newsockfd, \"I got your message\", 18);
    if (n < 0) {
        perror(\"Error writing to socket\");
        exit(1);
    }

    close(sockfd);
    close(newsockfd);

    return 0;
}
[/code]

客户端代码:

[code]
++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>

#define PORT 8080

int main(int argc, char *argv[]) {
    int sockfd, n;
    struct sockaddr_in serv_addr;
    struct hostent *server;

    char buffer[256];
    if (argc < 2) {
        fprintf(stderr,\"usage %s hostname\\n\", argv[0]);
        exit(1);
    }

    // 获取服务器地址
    server = gethostbyname(argv[1]);
    if (server == NULL) {
        fprintf(stderr, \"Error, no such host\\n\");
        exit(0);
    }

    // 创建 socket
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0) {
        perror(\"Error opening socket\");
        exit(1);
    }

    // 设置服务器地址及端口号
    bzero((char *) &serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    bcopy((char *)server->h_addr,
          (char *)&serv_addr.sin_addr.s_addr,
          server->h_length);
    serv_addr.sin_port = htons(PORT);

    // 连接到服务器
    if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0) {
        perror(\"Error connecting\");
        exit(1);
    }

    printf(\"Client: Connected to server %s:%d\\n\",
           inet_ntoa(serv_addr.sin_addr), ntohs(serv_addr.sin_port));

    // 发送消息给服务端
    printf(\"Client: Please enter the message: \");
    bzero(buffer,256);
    fgets(buffer,255,stdin);
    n = write(sockfd, buffer, strlen(buffer));
    if (n < 0) {
        perror(\"Error writing to socket\");
        exit(1);
    }

    // 读取服务端响应
    bzero(buffer, 256);
    n = read(sockfd, buffer, 255);

    if (n < 0) {
        perror(\"Error reading from socket\");
        exit(1);
    }

    printf(\"Client: Here is the message received: %s\\n\",buffer);

    close(sockfd);

    return 0;
}
[/code]

运行服务端程序后,可以使用客户端程序与其通讯。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则