#include "stdafx.h"
#include <winsock2.h>
#include <stdio.h>BOOL InitWinsock();
int main()
{
SOCKET socket1; InitWinsock();
struct sockaddr_in server;
int len =sizeof(server);
server.sin_family=AF_INET;
server.sin_port=htons(1000);                      ///server的监听端口
server.sin_addr.s_addr=inet_addr("10.200.160.24"); ///server的地址  socket1=socket(AF_INET,SOCK_DGRAM,0);
while (1)
{ char buffer[1024]="\0";
printf("输入消息(按回车发送)\n");
scanf("%s",buffer);
if (strcmp(buffer,"bye")==0)
break;
if (sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&server,len)!=SOCKET_ERROR)
{
if (recvfrom(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&server,&len)!=SOCKET_ERROR)
printf("rece from server:%s\n",buffer);
}
}
closesocket(socket1);
return 0;
}BOOL InitWinsock()
{
int Error;
WORD VersionRequested;
WSADATA WsaData;
VersionRequested=MAKEWORD(2,2);
Error=WSAStartup(VersionRequested,&WsaData); //启动WinSock2
if(Error!=0)
{
return FALSE;
}
else
{
if(LOBYTE(WsaData.wVersion)!=2||HIBYTE(WsaData.wHighVersion)!=2)
{
WSACleanup();
return FALSE;
}

}
return TRUE;
}
中的InitWinsock()这个方法做什么用的?
哪个高手帮我讲一下这个程序好吗?谢谢了

解决方案 »

  1.   

    就是做WinSock模块的初始化,在使用socket之前必须要做这个初始化(调用WSAStartup函数)。
      

  2.   

    初始化win socket dll啊,系统有2个版本的dll啊。
      

  3.   

    从函数名可以看出是初始化Winsock。
      

  4.   

    恩 是不是 写UDP通讯 初始化 socket都这个模式这么写啊
      

  5.   

    windows 网络编程,不管是tcp还是udp,如果你用到了win socket的函数,都必须初始化win socket的
      

  6.   

    初始化win socket的作用是什么?
      

  7.   

    指定使用的socket的版本,1.1的dll和2.2的dll可以在操作系统共存,但他们的功能是有差别的。
      

  8.   

    哦 好像明白点了 那我这么写是用的1.1dll还是2.2dll呢?
      

  9.   

    是不是winsock2就是代表2.2版本了 而且如果写成winsock1就是1.1了吗
      

  10.   

    1.1或2.2是由下面的代码决定的:
    WORD VersionRequested; 
    WSADATA WsaData; 
    VersionRequested=MAKEWORD(2,2); //版本
    Error=WSAStartup(VersionRequested,&WsaData); //启动WinSock2 
      

  11.   

    就是做WinSock模块的初始化,在使用socket之前必须要做这个初始化(调用WSAStartup函数)。
      

  12.   

    在使用Winsock API进行编程时,要对其进行初始化,初始化工作由WSAStartup函数完成。WSAStartup函数的两个参数的意义可以查看msdn