快速业务通道

C++中的IPv6网络程序设计

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
p();
????return -1;
??}
??// ?ììy
??if (listen(ServSock, 5) == SOCKET_ERROR)
??{
????fprintf(stderr, "listen() failed with error %d: %s\n",
??????WSAGetLastError(), DecodeError(WSAGetLastError()));
????WSACleanup();
????return -1;
??}
??printf("''Listening'' on port %s, protocol??%s, protocol??family %s\n",
????Port, \"TCP\",
????"PF_INET6");

??freeaddrinfo(AddrInfo);
??//ê1ó?select I/O ?£Dí??DDê?·¢
??FD_ZERO(&SockSet);
??while(1)
??{
????FromLen = sizeof(From);
????if (FD_ISSET(ServSock, &SockSet)) break;
????FD_SET(ServSock, &SockSet);
????if (select(0, &SockSet, 0, 0, 0) == SOCKET_ERROR)
????{
??????fprintf(stderr, "select() failed with error %d: %s\n",
????????WSAGetLastError(), DecodeError(WSAGetLastError()));
??????WSACleanup();
??????return -1;
????}
??}
??if (FD_ISSET(ServSock, &SockSet))
??{
????FD_CLR(ServSock, &SockSet);
??}
??//?óêüò???á??ó
??SOCKET ConnSock;
??ConnSock = accept(ServSock, (LPSOCKADDR)&From, &FromLen);
??if (ConnSock == INVALID_SOCKET)
??{
????fprintf(stderr, "accept() failed with error %d: %s\n",
??????WSAGetLastError(), DecodeError(WSAGetLastError()));
??????WSACleanup();
??????return -1;
??}
??if (getnameinfo((LPSOCKADDR)&From, FromLen, Hostname,
????sizeof(Hostname), NULl??, 0, NI_NUMERICHOST) != 0)
????strcpy(Hostname, "<unknown>");
????printf("\nAccepted connection from %s\n", Hostname);
????while(1)
????{
??????//μè′y?óêüêy?Y
??????AmountRead = recv(ConnSock, Buffer, sizeof(Buffer), 0);
??????if (AmountRead == SOCKET_ERROR)
??????{
????????fprintf(stderr, "recv() failed with error %d: %s\n", WSAGetLastError(), DecodeError(WSAGetLastError()));
??????????closesocket(ConnSock);
????????break;
??????}
??????if (AmountRead == 0) {
????????printf("Client closed connection\n");
??????????closesocket(ConnSock);
????????break;
??????}

??????printf("Received %d bytes from client: [%.*s]\n",
????????AmountRead, AmountRead, Buffer);
??????//??DD?òμ¥ECHO ??ó|
??????printf("Echoing same data back to client\n");
????????RetVal??= send(ConnSock, Buffer, AmountRead, 0);
??????if (RetVal??== SOCKET_ERROR)
??????{
????????fprintf(stderr, "send() failed: error %d: %s\n",
??????????WSAGetLastError(), DecodeError(WSAGetLastError()));
????????closesocket(ConnSock);
????????break;
??????}
????}
????return 0;
}

void CIPv6::Usage(char *ProgName)
{
??fprintf(stderr, "\nSimple socket sample server program.\n");
????fprintf(stderr, "transport tEither TCP or UDP. (default: %s)\n",
????"TCP");
????fprintf(stderr, "port\t\tPort on which to bind. (default %s)\n",
????DEFAULT_PORT);
??fprintf(stderr, "address\tIP address on which to bind.(default: unspecified address)\n");
????WSACleanup();
??exit(1);
}

LPSTR CIPv6::DecodeError(int ErrorCode)
{
??static char Message[1024];
??FormatMessage(FORMAT_ME

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号