龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

WinSocket 编程

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
/*下面是服务端的连接的初始化函数, SOCKET sockserver(const char *service,const char *transport,int qlen) SOCKET TCPserver(const char * service,int qlen) SOCKET UDPserver(const char * service,int qlen) 直接调用下面三个函

/*下面是服务端的连接的初始化函数,

SOCKET sockserver(const char *service,const char *transport,int qlen)

SOCKET TCPserver(const char * service,int qlen)

SOCKET UDPserver(const char * service,int qlen)

直接调用下面三个函数,就可以对socket 进行初始化,

有了它,我们进行socket 编程非常的方面

笔者还作了客户端的函数,及网络编程的例子,如有需要者,请E-mail:cangzhu@163.com

*/

  #include "stdlib.h"

  #include "winsock.h"

  #include "stdio.h"

  #include "iostream.h"

  #include "string.h"

#ifndef INADDR_NONE

  #define INADDR_NONE 0xffffffff

  #endif

SOCKET sockserver(const char *service,const char *transport,int qlen)

{

   strUCt protoent *protoin;

   struct sockaddr_in ipaddr;

   struct servent *servin;

   int type;

   SOCKET sock;

memset(&ipaddr,0,sizeof(ipaddr));

   ipaddr.sin_family=AF_INET;

   ipaddr.sin_addr.s_addr=INADDR_ANY;

if(servin=getservbyname(service,transport))

   ipaddr.sin_port=ntohs((u_short)servin->s_port);

   else

   if((ipaddr.sin_port=htons((u_short)atoi(service)))==0)

   {

   printf("get portnum error");

   WSACleanup();

   getchar();

   exit(1);

   }

if((protoin=getprotobyname(transport))==0)

   {

   printf("get protocol error");

   WSACleanup();

   getchar();

   exit(1);

   }

if(strcmp(transport,"udp")==0)

   type=SOCK_DGRAM;

   else

   type=SOCK_STREAM;

sock=socket(PF_INET,type,protoin->p_proto);

if(sock==INVALID_SOCKET)

   {

   printf("create socket error");

   WSACleanup();

   getchar();

   exit(1);

   }

  

   if(bind(sock,(struct sockaddr*)&ipaddr,sizeof(ipaddr))==SOCKET_ERROR)

   {

   printf("sock bind error");

   WSACleanup();

   getchar();

   exit(1);

   }

if(type==SOCK_STREAM)

   {

   if(listen(sock,qlen)==SOCKET_ERROR)

   {

   printf("sock bind error");

   WSACleanup();

   getchar();

   exit(1);

   }

   }

return sock;

  }

SOCKET TCPserver(const char * service,int qlen)

  {

   return sockserver(service,"tcp",qlen);

  }

SOCKET UDPserver(const char * service,int qlen)

  {

   return sockserver(service,"udp",qlen);

  }

  

  

  

  

精彩图集

赞助商链接