栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言网络编程客户端和服务器之间的通信(tcp)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言网络编程客户端和服务器之间的通信(tcp)

客户端

#include 
#include 
#include 
#include 
#include 

#define SERVPORT 5000


int main(int argc,char ** argv)
{
    int sockfd,n;
    struct sockaddr_in servaddr,cliaddr;
    char sendline[1000];//发送缓冲区大小
    char recvline[1000];

    if(argc != 2)
    {
        printf("usage:server address!n");
        exit(0);
    }

    sockfd = socket(AF_INET,SOCK_STREAM,0);

    bzero(&servaddr,sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(SERVPORT);
    servaddr.sin_addr.s_addr = inet_addr(argv[1]);
    

    connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

    while(fgets(sendline,1000,stdin) != NULL)
   
    {
        sendto(sockfd,sendline,strlen(sendline),0,
                      (struct sockaddr *)&servaddr,sizeof(servaddr));
        

        n = recvfrom(sockfd,recvline,1000,0,NULL,NULL);
        

        recvline[n] = '';

        fputs(recvline,stdout);
    }
    close(sockfd);

    return 0;
}

服务器

#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define SERVPORT 5000

int main()
{
    int listenfd, connfd, n;
    struct sockaddr_in servaddr, cliaddr;
    socklen_t clilen;
    char msg[1000];

    listenfd = socket(AF_INET, SOCK_STREAM, 0);

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(SERVPORT);
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

    bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr));

    listen(listenfd, 100);

    while (1)  //多个客户端
    {
        clilen = sizeof(cliaddr);

        connfd = accept(listenfd, (struct sockaddr *)&cliaddr, &clilen);

        for (;;) //多次会话
        {
            n = recvfrom(connfd, msg, 1000, 0, (struct sockaddr *)&cliaddr, &clilen);

            if (0 == n)
            {
                printf("client offline!n");
                break;
            }

            sendto(connfd, msg, n, 0, (struct sockaddr *)&cliaddr, sizeof(cliaddr));

            printf("--------------------------------n");

            msg[n] = '';

            printf("received the following:n");

            printf("%sn", msg);

            printf("--------------------------------------n");
        }

        close(connfd);
    }

    close(listenfd);

    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/297494.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号