📄 client.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#define PORT 3490 //端口号
#define MAXDATASIZE 100 //接收消息的最大长度
int main (int argc,char *argv[])
{
int sockfd,numbytes;
char buf[MAXDATASIZE];
struct hostent *he;
struct sockaddr_in their_addr;
/*若不是两个传入参数则提示出错信息,并结束运行*/
if (argc!=2)
{
fprintf(stderr,"usage:client hostname\n");
exit(1);
}
/*从第二个传入参数获取主机信息*/
if ((he=gethostbyname(argv[1]))==NULL)
{
herror("gethostbyname");
exit(1);
}
/*创建一个socket,赋值给sockfd,创建成功则继续,否则输出出错信息并结束运行*/
if ((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket");
exit(1);
}
their_addr.sin_family=AF_INET; //设定地址簇类型
their_addr.sin_port=htons(PORT); //给端口赋值
their_addr.sin_addr=*((struct in_addr *)he->h_addr); //给IP地址赋值
bzero(&(their_addr.sin_zero),8);
/*向服务器发送连接请求,连接成功则继续,否则输出出错信息并结束运行*/
if (connect(sockfd,(struct sockaddr *)&their_addr,sizeof(struct sockaddr))==-1)
{
perror("connect");
exit(1);
}
/*接收消息,存放到buf中*/
if ((numbytes=recv(sockfd,buf,MAXDATASIZE,0))==-1)
{
perror("recv");
exit(1);
}
buf[numbytes]='\0';
printf("Received:%s",buf);
close(sockfd); //关闭socket
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -