#include <WINSOCK2.H>
#include <stdio.h>int main(int argc,char** argv)
{ WSADATA wsaData; char HostName[256]; hostent* HostEnt; protoent* ProtoEnt; in_addr** Addr; char* IPAddr; SOCKET Socket; sockaddr_in Sin; SOCKET AcceptSocket; //初始化WinSock if(WSAStartup(MAKEWORD(2,2),&wsaData)) { printf("Init WinSock failed!\n"); return 1; }//获取主机名
gethostname(HostName,256); printf("%s\n",HostName);//获取主机信息
HostEnt=gethostbyname(HostName); printf("%s\n",HostEnt->h_name); //枚举主机IP地址列表 Addr=(in_addr**)HostEnt->h_addr_list; while(*Addr) { IPAddr=inet_ntoa(**Addr); printf("%s\n",IPAddr); Addr++; }//建立Socket ProtoEnt=getprotobyname("TCP"); Socket=socket(AF_INET,SOCK_STREAM,ProtoEnt->p_proto);
if(Socket<0)
{ printf("Socket error!"); return 2; }//绑定Socket Sin.sin_port=htons(23); Sin.sin_family=AF_INET; Sin.sin_addr.s_addr=0;
if(bind(Socket,(sockaddr*)&Sin,sizeof(Sin)))
{ printf("%s\n","Socket error!"); return 3; }//侦听请求
if(listen(Socket,1)) { printf("%s","Socket error!"); return 4; } // while (1) { AcceptSocket=SOCKET_ERROR; while(AcceptSocket==SOCKET_ERROR) { AcceptSocket=accept(Socket,(sockaddr*)&Sin,NULL); } printf( "Client Connected.\n"); break; }char msg[]="\r\n==Connected!==\r\n";
printf("%d\n",send(AcceptSocket,msg,strlen(msg),0));
//关闭Socket收发功能
shutdown(AcceptSocket,0);closesocket(AcceptSocket);
closesocket(Socket);//取消被阻塞的Socket
if(WSAIsBlocking()) WSACancelBlockingCall(); //释放WinSock资源 WSACleanup(); return 0;}