文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>简单的linux c socket例子

简单的linux c socket例子

时间:2010-08-21  来源:flynetcn

服务端代码:

#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define MAXDATASIZE 1024

#define SERVERPORT 8000
#define MAXCONN_NUM 10

int main()
{
    char buf[MAXDATASIZE];
    int sockfd, new_fd, numbytes;
    struct sockaddr_in server_addr;
    struct sockaddr_in client_addr;
    int sin_size;
    if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
        perror("socket error");
        return 1;
    }
    memset(&client_addr, 0, sizeof(struct sockaddr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(SERVERPORT);
    server_addr.sin_addr.s_addr = INADDR_ANY;
    if (bind(sockfd, (struct sockaddr *) &server_addr, sizeof(struct sockaddr)) == -1) {
        perror("bind error");
        return 1;
    }
    if (listen(sockfd, MAXCONN_NUM) == -1) {
        perror("listen error");
        return 1;
    }

    while (1) {
        sin_size = sizeof(struct sockaddr_in);
        if ((new_fd = accept(sockfd, (struct sockaddr *)&client_addr, &sin_size)) == -1) {
            perror("accept error");
            continue;
        }
        printf("server: got connection from %s\n", inet_ntoa(client_addr.sin_addr));
        if ((numbytes = recv(new_fd, buf, MAXDATASIZE, 0)) == -1) {
            perror("recv error");
            return 1;
        }
        if (numbytes) {
            buf[numbytes] = '\0';
            printf("received: %s\n", buf);
            sleep(3);
        }
        printf("send: hi~~\n");
        if (send(new_fd, "hi~~", 5, 0) == -1) {
            perror("send error");
            return 1;
        }
        close(new_fd);
    }
    return 0;
}




客户端代码:

#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define MAXDATASIZE 1024

#define SERVERIP "192.168.0.2"
#define SERVERPORT 8000

int main(int argc, char *argv[])
{
    char buf[MAXDATASIZE];
    int sockfd, numbytes;
    struct sockaddr_in server_addr;
    if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
        perror("socket error");
        return 1;
    }
    memset(&server_addr, 0, sizeof(struct sockaddr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(SERVERPORT);
    server_addr.sin_addr.s_addr = inet_addr(SERVERIP);
    if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1) {
        perror("connect error");
        return 1;
    }
    printf("send: Hello, world!\n");
    if (send(sockfd, "Hello, world!", 14, 0) == -1) {
        perror("send error");
        return 1;
    }
    if ((numbytes = recv(sockfd, buf, MAXDATASIZE, 0)) == -1) {
        perror("recv error");
        return 1;
    }
    if (numbytes) {
        buf[numbytes] = '\0';
        printf("received: %s\n", buf);
    }
    close(sockfd);
    return 0;
}


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载