#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(与服务器对应的端口号)