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

yashio 2003-01-30 04:08:50
我在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;
}

...全文
440 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
thomas269 2003-01-31
  • 打赏
  • 举报
回复
不是la, 在linux/UNIX, 對TCP/IP做sync的通訊是, read/write可以有效地提高program的flexibility,同時如果有需要, 可以把你的program成為xinetd的service, 因為linux會自動為descriptor尋找適合的調用
blh 2003-01-30
  • 打赏
  • 举报
回复
还有,使用socket时,用send或recv,不要使用read或write
blh 2003-01-30
  • 打赏
  • 举报
回复
我找到你的问题了
write(sockfd,argv[2],sizeof(argv[2]));???你在搞笑吗?
argv[2]是指针,在x86-32系统下就是4字节,sizeof(argv[2])改成strlen(argv[2])
blh 2003-01-30
  • 打赏
  • 举报
回复
没问题,没有你说的什么4自负的限制,呵呵,我的例子程序如下

#include <stdio.h>

int main(int argc, char* argv[])
{
int i;

for (i = 0; i < argc; i++)
printf("param%d: %s\n", i, argv[i]);
return 0;
}

编译: gcc -o demo demo.c
执行:./demo 127.0.0.1 "1234567890"
结果:
param0: ./demo
param1: 127.0.0.1
param2: 1234567890




yashio 2003-01-30
  • 打赏
  • 举报
回复
那么如何解决我的问题那,有什么好办法,谢谢!!
blh 2003-01-30
  • 打赏
  • 举报
回复
肯定是有限制的,但是一般情况是足够用得了,呵呵

23,124

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧