linux下main函数的参数长度是不是有限制???

yashio yashio 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我在linux下写了和windows下类似的netsend程序,格式希望就是这样

netsend ip "message" 或者 netsend -a ip -m "message"

所以就要用到带参数的main函数,argv[1]是ip,argv[2]就是message

程序包括服务端和客户端已经完成,基本可以,就是message长度有限制,好像只能是4个
字符,也就4个字节,超过了就只显示一个@还有乱麻,

如果不用带参数的main函数,直接就提示你输入,然后gets将字符串存入缓冲区,这样处
理

一点问题也没有,但是觉得这样太土了,最好还是windows下的格式,比较亲切的说

服务端程序一点问题也没有,只是客户端,如何处理message这个参数作为main函数的参数
客户端程序如下(我用argv【2】表message)
#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"
#include "unistd.h"

int main(int argc,char *argv[])
{
int sockfd;
int len;
int result;
struct sockaddr_in address;
struct hostent *h;

// getopt(argc,argv,"c:");

// char message[100];

h=gethostbyname(argv[1]);

sockfd=socket(AF_INET,SOCK_STREAM,0);

address.sin_family=AF_INET;
address.sin_addr=*((struct in_addr *)h->h_addr);
address.sin_port=htons(2323);

len=sizeof(address);

result=connect(sockfd,(struct sockaddr *)&address,len);
if(result==-1)
{
perror("connect");
exit(1);
}
// printf("Please input your message:\n");
//gets(message);
write(sockfd,argv[2],sizeof(argv[2]));
close(sockfd);
return 0;
}

...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
yashio
Linux/Unix社区 23,224 成员 74,535 内容