各位大侠请问一下
ioctlsocket()函数是干什么用的?它返回值是什么?共有几个参数?它的各个参数是干什么用的?SetForegroundWindow()是干什么用的?它返回值是什么?它的各个参数是干什么用的?fflush(0)是干什么用的?它还有别的参数吗?它返回值是什么?它的各个参数是干什么用的?atio()是干什么用的?它的参数是什么?它返回值是什么?它的各个参数是干什么用的?inet_ntoa()是干什么用的?他的参数是什么?它返回值是什么?它的各个参数是干什么用的?ntohs()是干什么用的?他的参数是什么?它返回值是什么?它的各个参数是干什么用的?fgets()是干什么用的?他的参数是什么?它返回值是什么?它的各个参数是干什么用的?以上各题每回答对一个给10分!(回答特别好的可以多给分)

解决方案 »

  1.   

    ioctlsocket
    The Windows Sockets ioctlsocket function controls the I/O mode of a socket.int ioctlsocket(
      SOCKET s,         
      long cmd,         
      u_long FAR *argp  
    );
    Parameters

    [in] Descriptor identifying a socket. 
    cmd 
    [in] Command to perform on the socket s. 
    argp 
    [in, out] Pointer to a parameter for cmd. 
    Return Values
    Upon successful completion, the ioctlsocket returns zero. Otherwise, a value of SOCKET_ERROR is returned, and a specific error code can be retrieved by calling WSAGetLastError.Error code Meaning 
    WSANOTINITIALISED A successful WSAStartup call must occur before using this function. 
    WSAENETDOWN The network subsystem has failed. 
    WSAEINPROGRESS A blocking Windows Sockets 1.1 call is in progress, or the service provider is still processing a callback function. 
    WSAENOTSOCK The descriptor s is not a socket. 
    WSAEFAULT The argp parameter is not a valid part of the user address space. 
      

  2.   

    自己去查看msdn吧,省几分!
      

  3.   

    小弟的英语很不好而我的MSDN又是英文的我看不懂所以才来问问各位大侠!哪位心肠好的大侠告诉我一下啊!在这里我先谢了!大侠们一定要救救我啊!!!!!!!
      

  4.   

    //只为分数,好辛苦啊1. ioctlsocket()
     简述:
      控制套接口的模式。  #include <winsock.h>  int PASCAL FAR ioctlsocket( SOCKET s, long cmd, u_long FAR* argp);  s:一个标识套接口的描述字。
      cmd:对套接口s的操作命令。
      argp:指向cmd命令所带参数的指针。注释:
      本函数可用于任一状态的任一套接口。它用于获取与套接口相关的操作参数,而
    与具体协议或通讯子系统无关。支持下列命令:
      FIONBIO:允许或禁止套接口s的非阻塞模式。argp指向一个无符号长整型。如
    允许非阻塞模式则非零,如禁止非阻塞模式则为零。当创建一个套接口时,它就处
    于阻塞模式(也就是说非阻塞模式被禁止)。这与BSD套接口是一致的。
    WSAAsynSelect()函数将套接口自动设置为非阻塞模式。如果已对一个套接口进行了
    WSAAsynSelect() 操作,则任何用ioctlsocket()来把套接口重新设置成阻塞模式的试
    图将以WSAEINVAL失败。为了把套接口重新设置成阻塞模式,应用程序必须首先
    用WSAAsynSelect()调用(IEvent参数置为0)来禁至WSAAsynSelect()。
      FIONREAD:确定套接口s自动读入的数据量。argp指向一个无符号长整型,其
    中存有ioctlsocket()的返回值。如果s是SOCKET_STREAM类型,则FIONREAD返
    回在一次recv()中所接收的所有数据量。这通常与套接口中排队的数据总量相同。
    如果S是SOCK_DGRAM 型,则FIONREAD返回套接口上排队的第一个数据报大
    小。
      SIOCATMARK:确实是否所有的带外数据都已被读入。这个命令仅适用于
    SOCK_STREAM类型的套接口,且该套接口已被设置为可以在线接收带外数据
    (SO_OOBINLINE)。如无带外数据等待读入,则该操作返回TRUE真。否则的话
    返回FALSE假,下一个recv()或recvfrom()操作将检索“标记”前一些或所有数据。
    应用程序可用SIOCATMARK操作来确定是否有数据剩下。如果在“紧急”(带外)
    数据前有常规数据,则按序接收这些数据(请注意,recv()和recvfrom()操作不会在
    一次调用中混淆常规数据与带外数据)。argp指向一个BOOL型数,ioctlsocket()在
    其中存入返回值。兼容性:
      本函数为Berkeley套接口函数ioctl()的一个子集。其中没有与FIOASYNC等价的
    命令,SIOCATMARK是套接口层次支持的唯一命令。返回值:
      成功后,ioctlsocket()返回0。否则的话,返回SOCKET_ERROR错误,应用程序
    可通过WSAGetLastError()获取相应错误代码。
    错误代码:
      WSANOTINITIALISED:在使用此API之前应首先成功地调用WSAStartup()。
      WSAENETDOWN:WINDOWS套接口实现检测到网络子系统失效。
      WSAEINVAL:cmd为非法命令,或者argp所指参数不适用于该cmd命令,或者
    该命令
    不适用于此种类型的套接口。
      WSAEINPROGRESS:一个阻塞的WINDOWS套接口调用正在运行中。
      WSAENOTSOCK:描述字不是一个套接口。参见:
      socket(), setsockopt(), getsockopt(), WSAAsyncSelect().2. SetForegroundWindow 
    注释:
    函数将窗口设为系统的前台窗口。这个函数可用于改变用户目前正在操作的应用程序. 键盘输入将被传到该窗口。BOOL SetForegroundWindow(
      HWND hWnd   // handle to window
    );参数 hWnd 
    [输入参数] 需要被激活至前台窗口的句柄返回值 
    假如该窗口被成功激活至前台,返回非零值,否则返回值为零。3. fflush()
    简介:
    刷新一个流注释:
    #include <stdio.h> 
    int fflush(FILE *stream);  
    函数 fflush 强制在所给的输出流或更新流 stream 上,写入在用户空间缓冲的所有数据,使用流的底层写功能函数。流的打开状态不受影响。 
    如果参数 stream 是 NULL, fflush 刷新 所有 打开的流对文件的操作,与对内存的操作相比,通常比较慢。譬如说,如果我要往文件里面写1个字节,写4096次,这速度比往文件里面写4096字节,只写一次,要慢很多。所以一般操作系统/库会把对文件的操作缓存起来,积累到一定程度,再作真正的物理操作。 
    你使用stdout相关函数的时候,因为操作系统/库把stdout也看成一个文件句柄(事实上,它也很可能是一个被重定向的文件),所以你的输出,可能会被操作系统/库暂时保存在内存里,这样可能不是你想要的结果,fflush一下,可以保证这样的缓存被清空。 返回值:
    成功执行返回 0,否则返回 EOF 并设置全局变量 errno 来指示错误发生。  错误代码:
    EBADF 
    Stream 不是一个打开的流,或者不是用于输出。 
    函数 fflush 也可能失败并置 errno 为 write(2) 指定的值例子:
    int i; 
    printf("请输入一个数字:"); 
    scanf("%d",&i);
    就有问题。因为,可能你要用户输入的时候,屏幕上什么都没有,那段话可能还在内存里呆着呢。所以要写成: 
    int i; 
    printf("请输入一个数字:"); 
    fflush(stdout); 
    scanf("%d",&i);如果你使用STL就不用考虑这样的问题了,STL的input stream接受输入前会自动把相应的output stream flush一下。 你说的fflush(0)是对标准输出流进行刷新,但是一般不这样使用4. atoi() //非atio()
    int atoi(const char* s);
    这个函数比较简单,用于把字符串s转换成int类型;该函数等价于
    (int)strtol(s, (char **)NULL, 10);5. inet_ntoa()
    简述:
      将网络地址转换成“.”点隔的字符串格式。  #include <winsock.h>  char FAR* PASCAL FAR inet_ntoa( struct in_addr in);  in:一个表示Internet主机地址的结构。注释:
      本函数将一个用in参数所表示的Internet地址结构转换成以“.” 间隔的诸如
    “a.b.c.d”的字符串形式。请注意inet_ntoa()返回的字符串存放在WINDOWS套接
    口实现所分配的内存中。应用程序不应假设该内存是如何分配的。在同一个线程的
    下一个WINDOWS套接口调用前,数据将保证是有效。返回值:
      若无错误发生,inet_ntoa()返回一个字符指针。否则的话,返回NVLL。其中的数
    据应在下一个WINDOWS套接口调用前复制出来。参见:
      inet_addr().6. ntohs()
    简述:
      将网络字节顺序转换成主机的无符号短整形数。  #include <winsock.h>
      
      u_short PASCAL FAR ntohs( u_short netshort);  netshort:网络字节顺序短整形数注释:
      本函数将一个16位数从网络字节顺序转换成主机字节顺序。返回值:
      ntohs()返回一个主机字节顺序的值。
      7. fgets()
    fscanf()、fgets()和fgetc()函数 
        函数fscanf()、fgets()和fgetc()均为文件的顺序读操作函数, 其调用格式 
    如下: 
         int fscanf(FILE *stream, char *format, <address-list>); 
         char fgets(char *string, int n, FILE *steam); 
         int fgetc(FILE *steam); 
        fscanf()函数的用法与scanf()函数相似,   只是它是从文件中读到信息。 
    fscanf()函数的返回值为EOF(即-1), 表明读错误, 否则读数据成功。fgets()函 
    数从文件中读取至多n-1个字符(n用来指定字符数), 并把它们放入string指向的 
    字符串中, 在读入之后自动向字符串未尾加一个空字符, 读成功返回string指针, 
    失败返回一个空指针。fgetc()函数返回文件当前位置的一个字符,  读错误时返 
    回EOF。 
        下面程序读取例11产生的test.dat文件, 并将读出的结果显示在屏幕上。 
        例 
         #include<stdio.h> 
         main() 
         { 
              char *s, m[20]; 
              int i; 
              FILE  *fp; 
              fp=fopen("test.dat", "r");    /*打开文字文件只读*/ 
              fgets(s, 24, fp);             /*从文件中读取23个字符*/ 
              printf("%s", s);              /*输出所读的字符串*/ 
              fscanf(fp, "%d", &i);         /*读取整型数*/ 
              printf("%d", i);              /*输出所读整型数*/ 
              putchar(fgetc(fp));           /*读取一个字符同时输出*/ 
              fgets(m, 17, fp);             /*读取16个字符*/ 
              puts(m);                      /*输出所读字符串*/ 
              fclose(fp);                   /*关闭文件*/ 
              getch();                      /*等待任一键*/ 
         } 
        运行后屏幕显示: 
        Your score of TOEFL is: 617 
        That's good news 
        如果将上例中fscanf(fp, "%d", &i)改为fscanf(fp, "%s", m),  再将其后 
    的输出语句改为printf("%s", m), 则可得出同样的结果。由此可见Turbo C2. 0 
    中只要是读文字文件, 则不论是字符还是数字都将按其ASCII值处理。 另外还要 
    说明的一点就是fscanf()函数读到空白符时, 便自动结束, 在使用时要特别注意。
      

  5.   

    更正:
    你说的fflush(0)是对标准输出流进行刷新,但是一般不这样使用
    //这句有误,#define NULL 0
    因此fflush(0)就是fflush(NULL),刷新所有打开的流