服务器和客户端在C语言的怎么运行_C#语言

C语言服务器客户端程序通常通过套接字编程实现,需要包含头文件`。在C#中,可以使用.NET框架的System.Net.Sockets`命名空间来实现类似的功能。

在C语言中,服务器和客户端的运行通常涉及到套接字编程,以下是一个简单的示例,展示了如何使用C语言编写一个基于TCP协议的服务器和客户端。

服务器和客户端在C语言的怎么运行_C#语言
(图片来源网络,侵删)

1、服务器端代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define BUF_SIZE 1024
#define PORT 8888
int main() {
    int server_sock, client_sock;
    struct sockaddr_in server_addr, client_addr;
    socklen_t client_addr_size;
    char buffer[BUF_SIZE];
    server_sock = socket(PF_INET, SOCK_STREAM, 0);
    if (server_sock == 1) {
        perror("socket error");
        exit(1);
    }
    memset(&server_addr, 0, sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    server_addr.sin_port = htons(PORT);
    if (bind(server_sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) == 1) {
        perror("bind error");
        exit(1);
    }
    if (listen(server_sock, 5) == 1) {
        perror("listen error");
        exit(1);
    }
    client_addr_size = sizeof(client_addr);
    client_sock = accept(server_sock, (struct sockaddr *)&client_addr, &client_addr_size);
    if (client_sock == 1) {
        perror("accept error");
        exit(1);
    }
    while (1) {
        ssize_t recv_len = recv(client_sock, buffer, BUF_SIZE  1, 0);
        if (recv_len == 1) {
            perror("recv error");
            break;
        } else if (recv_len == 0) {
            break;
        }
        buffer[recv_len] = ' ';
        printf("Received message: %s
", buffer);
    }
    close(client_sock);
    close(server_sock);
    return 0;
}

2、客户端代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define BUF_SIZE 1024
#define SERVER_IP "127.0.0.1"
#define SERVER_PORT 8888
int main() {
    int client_sock;
    struct sockaddr_in server_addr;
    char buffer[BUF_SIZE];
    client_sock = socket(PF_INET, SOCK_STREAM, 0);
    if (client_sock == 1) {
        perror("socket error");
        exit(1);
    }
    memset(&server_addr, 0, sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
    server_addr.sin_port = htons(SERVER_PORT);
    if (connect(client_sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) == 1) {
        perror("connect error");
        exit(1);
    }
    while (1) {
        printf("Input message to send: ");
        fgets(buffer, BUF_SIZE, stdin);
        if (!strcmp(buffer, "q
") || !strcmp(buffer, "Q
")) {
            break;
        }
        send(client_sock, buffer, strlen(buffer), 0);
    }
    close(client_sock);
    return 0;
}

要运行这些代码,首先编译它们,然后分别运行服务器端和客户端,使用gcc编译器:

gcc server.c o server
gcc client.c o client

然后运行服务器和客户端:

./server
./client

在客户端输入消息,服务器将接收并显示这些消息,要结束程序,可以在客户端输入“q”或“Q”。

服务器和客户端在C语言的怎么运行_C#语言
(图片来源网络,侵删)

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2024-07-12 23:40
下一篇 2024-07-12 23:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信