client.c

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

#define maxn 101
/**
服务器端
1>建立一个基于TCP的流套接字描述符
2>将套接字描述符绑定到本地地址和本地端口上
3>监听客户端的请求
4>通过Accept接收客户端的请求
5>发送数据/接收数据
6>关闭套接字
客户端
1>与服务器端建立链接
2> 发送数据/接收数据
3>关闭套接字
**/
int main(int  argc, char** argv)
{
    int s_socket ;
    //1>建立一个基于TCP的流套接字描述符
    if((s_socket = socket(AF_INET, SOCK_STREAM, 0)) == -1)
    {
        herror("socket");
        exit(errno);
    }
    else
    {
        printf("socket create success!\n");
    }
    //端口号
    unsigned int port;
    if(argv[2]) {
        port = atoi(argv[2]);
    }
    else {
        port = 1111;
    }
    //2>将套接字描述符绑定到本地地址和本地端口上
    struct sockaddr_in  addport;
    bzero(&addport, sizeof(addport));
    addport.sin_family = AF_INET;
    //addport.sin_addr.s_addr = inet_addr(argv[1]);
    addport.sin_port = htons(port);
    if(inet_aton(argv[1], (struct in_addr*)&addport.sin_addr.s_addr) == -1)
    {
        herror("port");
        exit(errno);
    }
    else
    {
        printf("IP and port  create success!\n");
    }
    //建立链接
    if(connect(s_socket, (struct sockaddr*)&addport, sizeof(addport)) == -1)
    {
        herror("connect");
        exit(errno);
    }
    else
    {
        printf("connect   success\n");
    }
    //3>监听客户端的请求
    char buf[maxn];
    char  buf1[maxn];
    int flag = 1;
    while(1)
    {
        //接收信息
        flag = 1;
        bzero(buf, maxn);
        int len;
        len = recv(s_socket, buf, maxn, 0);
        if(len > 0)
        {
            printf("服务器发来的信息是:  %s\n", buf);
        }
        else
        {
            if(len == 0)
            {
                printf("server is closed!\n");
                flag = 0;
                break;
            }
            else if(len == -1)
            {
                printf("receive message failure!");
            }
        }
    loop:
        if(flag == 0) break;
        bzero(buf, maxn);
        printf("请输入要发送的信息:");
        fgets(buf, maxn, stdin);
        if(strncasecmp(buf, "exit", 4) == 0)
        {
            printf("聊天中止\n");
            break;
        }
        if(strncmp(buf, "\n", 1) == 0)
        {
            printf("空字符\n");
            continue;
        }
        int L_len = strlen(buf);
        if(buf[L_len - 1] == '\n')
        {
            len = send(s_socket, buf, L_len - 1, 0);
        }
        else
        {
            len = send(s_socket, buf, L_len, 0);
        }
        if(len > 0)
        {
            printf("send message success!\n");
        }
        else
        {
            printf("send message failure!\n");
            break;
        }
    }
    close(s_socket);
    return 0;
}
View Code

相关文章:

  • 2022-12-23
  • 2022-02-07
  • 2022-12-23
  • 2022-12-23
  • 2021-09-26
  • 2021-12-16
  • 2021-11-20
  • 2021-12-18
猜你喜欢
  • 2021-12-05
  • 2021-09-26
  • 2021-12-26
  • 2021-07-15
  • 2022-01-14
  • 2021-12-17
  • 2022-12-23
相关资源
相似解决方案