?warning: implicit declaration of function ‘gets’ [-Wimplicit-function-declaration]? ? ? ? ?gets(buf);//獲取用戶輸入的字符串,存放到buf中? ? ? ? ?^/tmp/ccnxjoDy.o:在函數‘main’中:tcpclient.c:(.text+0x149): 警告: the `gets' function is dangerous and should not be used.#include?<stdio.h>
#include?<unistd.h>
#include?<strings.h>
#include?<sys/types.h>
#include?<sys/socket.h>
#include?<netinet/in.h>
#include?<netdb.h>
#include?<stdlib.h>
#include?<string.h>
#define?PORT?1234
#define?MAXDATASIZE?100
int?main(int?argc,char?*argv[])
{
????//定義變量
????int?sockfd,num,numw;
????char?buf[MAXDATASIZE];
????struct?hostent?*he;
????struct?sockaddr_in?server;
????if(argc!=2)
????{
????????printf("Usage:%s<IP?Address>\n",argv[0]);
????????exit(1);
????}
????
????//域名解析
????if((he=gethostbyname(argv[1]))==NULL)
????{
????????printf("gethostbyname()?error\n");
????????exit(1);????
????}
????//創建套接字
????if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
????{
????????printf("socket()?error\n");
????????exit(1);????
????}
????//初始化
????bzero(&server,sizeof(server));
????server.sin_family=AF_INET;
????server.sin_port=htons(PORT);
????server.sin_addr=*((struct?in_addr?*)he->h_addr);
????//建立與服務器的連接
????if(connect(sockfd,(struct?sockaddr?*)&server,sizeof(server))==-1)
????{
????????printf("connect()?error\n");
????????exit(1);
????}
????while(1){
????????printf("Please?enter?a?string:\n");
????????gets(buf);//獲取用戶輸入的字符串,存放到buf中
????????if((numw=write(sockfd,buf,MAXDATASIZE))==-1){//將buf中的數據發送給服務器
????????????printf("write?error.\n");
????????????exit(1);
????????}
????????if((num=recv(sockfd,buf,MAXDATASIZE,0))==-1)//接收從服務器發回來的已經反轉的字符串
????????{
????????????printf("recv()?error\n");
????????????exit(1);
????????}
????????if(!strcmp(buf,"tuiq"))
????????????break;
????????buf[num-1]='\0';
????????printf("The?reverse?message:\n%s\n",buf);
????}
????close(sockfd);//關閉套接字
}
- 1 回答
- 1 關注
- 3892 瀏覽
添加回答
舉報
0/150
提交
取消