LINUX - 最简单的CS通信实例

 

服务端【编译:gcc server.c -o server】

#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <string.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <arpa/inet.h>

#define MAXLINE 1024
int main(int argc,char **argv)
{
    int listenfd,connfd;
    struct sockaddr_in sockaddr;
    char buff[MAXLINE];
    int n;

    memset(&sockaddr,0,sizeof(sockaddr));

    sockaddr.sin_family = AF_INET;
    sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    sockaddr.sin_port = htons(10004);

    listenfd = socket(AF_INET,SOCK_STREAM,0);

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

    listen(listenfd,1024);


    printf("Please wait for the client information\n");

    for(;;)
    {
        if((connfd = accept(listenfd,(struct sockaddr*)NULL,NULL))==-1)
        {
            printf("accpet socket error: %s errno :%d\n",strerror(errno),errno);
            continue;
        }

        n = recv(connfd,buff,MAXLINE,0);
        buff[n] = '\0';
        printf("recv msg from client:%s",buff);
        close(connfd);
    }
    close(listenfd);
}

 

客户端【编译:gcc client.c -o client  【备注:需要修改服务端地址,代码中为1.2.3.4】】

#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <errno.h>
#include <string.h>
#include <arpa/inet.h>
#include <unistd.h>
#define MAXLINE 1024

void sendMsgToServer(char *xxx){
    char *servInetAddr = "1.2.3.4";
    int socketfd;
    struct sockaddr_in sockaddr;
    char recvline[MAXLINE],sendline[MAXLINE];
    int n;
    memcpy(sendline,xxx,1000);
    socketfd = socket(AF_INET,SOCK_STREAM,0);
    memset(&sockaddr,0,sizeof(sockaddr));
    sockaddr.sin_family = AF_INET;
    sockaddr.sin_port = htons(10004);
    inet_pton(AF_INET,servInetAddr,&sockaddr.sin_addr);
    if((connect(socketfd,(struct sockaddr*)&sockaddr,sizeof(sockaddr))) < 0 )
    {
        printf("connect error %s errno: %d\n",strerror(errno),errno);
        exit(0);
    }
    printf("send message to server\n");
    if((send(socketfd,sendline,strlen(sendline),0)) < 0)
    {
        printf("send mes error: %s errno : %d",strerror(errno),errno);
        exit(0);
    }
    close(socketfd);
    printf("over\n");
}
int main(int argc,char **argv)
{ 
    char abc[1000];
    while(fgets(abc,1024,stdin) != EOF){
        sendMsgToServer(abc);
    }
    return 0;
}

 

 

 

参考:

https://www.cnblogs.com/yusenwu/p/4579167.html

上一篇:【测试日常】软件测试词汇整理


下一篇:“sockaddr”: “struct”类型重定义的错误的解决办法《转》