这里有个C语言问题,大家帮帮忙!谢谢!
我刚学C没多久,下了一个C语言源代码,分析如下,大家看看有没有错!还有其中有些问题……#include <stdafx.h> 这个头文件是干什么的?
#include <stdio.h> 头文件
#include <string.h> 这个头文件是干什么的?
#include <winsock.h> 这个头文件是干什么的?
#pragma comment (lib,"ws2_32.lib") 这里是什么意思啊?
int main(int argc, char *argv[]) 定义main函数
{
int mysocket; 定义了一个整型变量mysocket
int pcount = 0; 定义了一个整型变量pcount ,并赋初值
struct sockaddr_in my_addr; 这里是什么意思?
WSADATA wsaData;
WORD wVersionRequested=MAKEWORD(1,1);
以上两句是什么意思?
if(argc < 3) IF语句
{
printf("usage: %s <host> <maxport>\n", argv[0]); 汗,这里输出argv[0]?<host> <maxport>原样输出?
exit(1); exit(1); 是什么东西?
}
if (WSAStartup(wVersionRequested , &wsaData)) 这里是个IF语句,但是没看懂,大家看看!
{
printf("Winsock Initialization failed.\n");
exit(1);
}
for(int i=1; i < atoi(argv[2]); i++)
{
if((mysocket = socket(AF_INET, SOCK_STREAM,0)) == INVALID_SOCKET){ s
printf("Socket Error");
exit(1);
}
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(i);
my_addr.sin_addr.s_addr = inet_addr(argv[1]); 这里是什么意思?
if(connect(mysocket, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == SOCKET_ERROR)
closesocket(mysocket);
else
{ 这里?
pcount++;
printf("Port %d - open\n", i);
#include <stdafx.h>
#include <stdio.h>
#include <string.h> 怎么这里又是一些C头文件?
#include <winsock.h>
#pragma comment (lib,"ws2_32.lib")
int main(int argc, char *argv[]) {
int mysocket;
int pcount = 0;
struct sockaddr_in my_addr;
WSADATA wsaData;
WORD wVersionRequested=MAKEWORD(1,1);
if(argc < 3) {
printf("usage: %s <host> <maxport>\n", argv[0]);
exit(1);
}
if (WSAStartup(wVersionRequested , &wsaData)){
printf("Winsock Initialization failed.\n");
exit(1);
}
for(int i=1; i < atoi(argv[2]); i++){
if((mysocket = socket(AF_INET, SOCK_STREAM,0)) == INVALID_SOCKET){
printf("Socket Error");
exit(1);
}
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(i);
my_addr.sin_addr.s_addr = inet_addr(argv[1]);
if(connect(mysocket, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == SOCKET_ERROR)
closesocket(mysocket);
else{
pcount++;
printf("Port %d - open\n", i);
}}
printf("%d ports open on host - %s\n", pcount, argv[1]);
closesocket(mysocket);
WSACleanup();
return 0;
}
}}
printf("%d ports open on host - %s\n", pcount, argv[1]);
closesocket(mysocket);
WSACleanup();
return 0;
} 楼主需要系统的学习下了哦,你问的问题都太基本了,书本上基本全都有了
#include <stdafx.h> 这个头文件是干什么的?这个在vc中是必须包含的,一般是用来配置的
#include <stdio.h> 头文件/这个你知道是什么意思吗?其实就是std通道的io函数库
剩下的头文件我不像说了,需要使用什么的函数库,就加载什么样的头文件~
比如你要使用printf你就需要加载stdio一样
加入你不加载#include <winsock.h>你又怎样进行套字节编程呢?即时是牛人我也没见过自己用汇编写套子节的了
其他的东西也没有必要一一解答了,你到百度上找,全是答案
给你个方向
有以下几方面你需要了解
1.主函数的参数传递
2.if语句中加入条件是个函数的话,函数返回0表示条件不成立,返回其他的表示条件成立
3.你这个是两个程序的代码,你竟然没有给他分开
4.你这个程序本身还是有些技术含量的,表现在使用了套子节,怎么说也是个网络编程嘛,不过你问的问题都是些基本的程序语法问题。。。
我对你的建议是,稳重一些,先把基础学好了在搞这些高档些的东东,不要被浮躁的社会所影响,另外学程序是需要买书的,比较重要的一点是,买书要买至少500页以上的,而且讲的知识点很少的,这样才能详细的学习。 以下很多是我个人的理解,不一定很准确,可以参考更多的资料!
#include <stdafx.h>
hc--没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。Standard Application Fram Extend
#include <stdio.h>
hc--标准输入输出函数的头 input&output
#include <string.h>
hc--处理字符串的
#include <winsock.h> 我也不知道,很少用这个
#pragma comment (lib,"ws2_32.lib")
hc--pragma是为了让编译器编译出的C或C++程序与机器硬件和操作系统保持完全兼容而定义的宏扩展,#pragma是和特定编译器相关的
struct sockaddr_in my_addr; hc--取my_addr的地址,再将其转换为指向struct sockaddr_in的指针
WSADATA wsaData;
WORD wVersionRequested=MAKEWORD(1,1);
WSADATA是一种数据结构,可以参考MSDN
typedef struct WSAData {
WORD wVersion;
WORD wHighVersion;
char szDescription[WSADESCRIPTION_LEN+1];
char szSystemStatus[WSASYS_STATUS_LEN+1];
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char FAR * lpVendorInfo;
} WSADATA, FAR * LPWSADATA;
if(argc < 3)
{
printf("usage: %s <host> <maxport>\n", argv[0]);
exit(1);
}
argc 和 argv都是在main()里面出现的,实际上是表示输入变量和输出变量的个数。
exit:在main函数中我们通常使用return (0);这样的方式返回一个值。
但这是限定在非void情况下的也就是void main()这样的形式。
exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束跳会操作系统。
但在如果把exit用在main内的时候无论main是否定义成void返回的值都是有效的,并且exit不需要考虑 剩下的问题lz自己找答案吧,不能什么都靠别人,有些问题是自己可以解决的,何必要来浪费别人的时间,况且自己自学可能更加的深刻,二楼把该说的都说了,以baidu为老师就行了。 谢谢大家啊!我才开始学C,现在只学到指针这章,这是我从网上下载的!自己研究了下,大多看不懂,就发上来了! 现在才发觉,我的基本C知识还没学好,不能操之过急!还需要进一步提高!谢谢上面的朋友! LZ的问题真多哦~!::08:: exit(0) 是退出程序的函数.~~!! 天那,学C一年多了,也不知道这些东东
看来真得去好好补补课了
页:
[1]
