博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WinSock服务程序
阅读量:4501 次
发布时间:2019-06-08

本文共 1502 字,大约阅读时间需要 5 分钟。

#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;
}

转载于:https://www.cnblogs.com/MaxWoods/archive/2006/06/29/438498.html

你可能感兴趣的文章
ajax基础知识
查看>>
Activity与Service之间交互并播放歌曲
查看>>
在使用python3.7+channels时会出现rsync错误
查看>>
这一篇是运算符。。
查看>>
在ubuntu16.04+python3.5情况下安装nltk,以及gensim时pip3安装不成功的解决办法
查看>>
windows系统的安装时间怎么查看
查看>>
20180911-Java实例01
查看>>
Javascript Event
查看>>
解决IOS safari下滑动的“橡皮筋”效果
查看>>
asp.net 得到一个文件夹下的所有文件夹及子文件夹名,得到所有文件名,文件大小,文件夹大小...
查看>>
从keystore(jks)文件中提取私钥
查看>>
调整数组顺序使奇数位于偶数前面
查看>>
HackerRank "Training the army" - Max Flow
查看>>
jquery next()方法
查看>>
深入剖析js命名空间函数namespace
查看>>
SQLHelper
查看>>
Cocos2d-x 3.0 编译出错 解决 error: expected &#39;;&#39; at end of member declaration
查看>>
Ubuntu12.04下载Repo
查看>>
python基础教程_学习笔记10:异常
查看>>
MATLAB——scatter的简单应用
查看>>