网络编程——客户端程序

来源:互联网 发布:数据伞监控软件 编辑:程序博客网 时间:2024/06/09 22:25
#include "stdio.h"
#include "stdlib.h"
#include "errno.h"
#include "sys/types.h"
#include "sys/socket.h"
#include "unistd.h"
#include "netinet/in.h"
#include "netdb.h"

#include "string.h"


//客户端初始化
void InitClient(int argc, char *argv[])
{
    struct sockaddr_in server_addr;
    struct hostent *host = NULL;
    int portnumber;
    int sockfd;
    if(argc != 3){
        fprintf(stderr, "Usage:%s hostname portnumbera", argv[0]);
        exit(1);
    }
    if ((host = gethostbyname(argv[1])) == NULL)
    {
        fprintf(stderr , "GetHostName error:%s" , strerror(errno));
        exit(1);
    }
    if((portnumber = atoi(argv[2])) < 0){
        fprintf(stderr, "Usage:%s hostname portnumbera", argv[0]);
        exit(1);
    }
    /* 客户端程序开始建立socket文件描述符 */
    if ((sockfd = socket(AF_INET , SOCK_STREAM , 0)) == -1)
    {
        fprintf(stderr , "Sockfd error:%s a" , strerror(errno));
        exit(1);
    }
    bzero(&server_addr , sizeof(server_addr));
    server_addr.sin_family = AF_INET;//INTERNET
    server_addr.sin_port = htons(portnumber);//选择端口号
    server_addr.sin_addr = *((struct in_addr *)host->h_addr);
    if (connect(sockfd ,  (struct sockaddr *)&server_addr , sizeof(struct sockaddr)) == -1)
    {
        fprintf(stderr , "Connect error:%s a" , strerror(errno));
        exit(1);
    }
    printf("sockfd = %d\n", sockfd);
}


int main(int argc, char *argv[])
{
    InitClient(argc, argv);  //初始化客户端
    while(1)
    {


    }
    return 0;
}

终端操作:

        编译:gcc client.c -o client

        执行:./client <服务器ip> 9999(与服务器对应的端口号)




0 0
原创粉丝点击