linux下main函数的参数长度是不是有限制???
我在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;
}
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;
}
...全文
相关推荐
main函数的参数汇总
我们经常用的main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。
Linux 中C语言getcwd()函数的用法
主要介绍了Linux 中C语言getcwd()函数的用法的相关资料,需要的朋友可以参考下
Linux系统调用-- recv/recvfrom 函数详解
从套接字上接收一个消息。对于recvfrom ,可同时应用于面向连接的和无连接的套接字。recv一般只用在面向连接的套接字,几乎等同于recvfrom,只要将recvfrom的第五个参数设置NULL。 如果消息太大,无法完整存放在所提供的缓冲区,根据不同的套接字,多余的字节会丢弃。 假如套接字上没有消息可以读取,除了套接字已被设置为非阻塞模式,否则接收调用会等待消息的到来。
linux目录操作函数常见
linux 最常用的目录操作函数 像open read 对一个文件的操作一样.
linux C函数之strdup函数分析
本文主要介绍了linux C函数之strdup函数分析。


