请问下边main函数中的2个参数 int argc, char* argv[]) 是什么意思?
请问他们的参数值是谁传给他们的?
int main(int argc, char* argv[])
{
int sockSvr;
int sockCnt;
sockaddr_in addrSvr={0};
int iRet;
int nSvrPort=1234;
char szFileName[256];
char szBuf[256];
FILE *pFile=NULL;
//
InitSocketLib();
sockSvr=-1;
sockCnt=-1;
if(argc>1)
nSvrPort=atoi(argv[1]);
while(true)
{
sockSvr=socket(AF_INET,SOCK_STREAM,0);
addrSvr.sin_family=AF_INET;
addrSvr.sin_port=htons(nSvrPort);
addrSvr.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(sockSvr,(sockaddr *)&addrSvr,sizeof(addrSvr))==-1)
{
printf("bind error:%d\n",WSAGetLastError());
break;
}
listen(sockSvr,SOMAXCONN);
sockCnt=accept(sockSvr,NULL,NULL);
RecvLine(sockCnt,szFileName,sizeof(szFileName));
pFile=fopen(szFileName,"rb");
if(pFile==NULL)
{
printf("open file fail:%d\n",GetLastError());
break;
}
while(true)
{
iRet=fread(szBuf,1,sizeof(szBuf),pFile);
if(iRet<1)
break;
if(iRet!=send(sockCnt,szBuf,iRet,0))
{
printf("send fail:%d\n",WSAGetLastError());
break;
}
}
break;
}
if(pFile!=NULL)
fclose(pFile);
if(sockCnt!=-1)
{
shutdown(sockCnt,SD_BOTH);
closesocket(sockCnt);
}
if(sockSvr!=-1)
closesocket(sockSvr);
return 0;
}
解决方案 »
- 64位环境下编译ATL COM组件,不能注册。
- 添加一个成员函数出现的问题
- 本人想研究网络,请各位前辈推荐一些好的书籍和论坛,在此谢过了,祝大家放假快乐!!
- 图象怪问题
- 求教,关于对话框中菜单的刷新问题?
- 怎样处理工作线程的返回值?
- 为什么参数值传不回来?
- 有人做过批量打印吗?给点思路吧。如果一次要打印几万条记录,该怎么办?在前台还是后台打?会不会导出数据时内存不足?打印机方面有什么
- 关于编写计算机引导程序的问题。在线等待!!!
- 请问一个LISTView类的问题
- 一个关于CRichEdit添加字体的字符的问题,实在没有办法,这个问题困扰我好几天了
- (100分求正确方案)运行时库设定不同运行结果不同
char* argv[]:参数名
例如:ls -l ,这个-l就是参数
比如你在ms-dos下执行该程序
cd 程序路径
程序名.exe a1 a2此时a1和a2这两个参数名会传入 char* argv[] 参数个数int argc为2
c字符串指针数组,根据命令串中空格分隔的参数个数(argc)建立
argv[0]存放的为执行程序的路径--即命令串的第一个参数,总是有的