博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++网络编程--简单的WinSock代码
阅读量:6256 次
发布时间:2019-06-22

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

//注意要引用WinSock2的lib文件,否则编译不会通过

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

转载地址:http://qwxsa.baihongyu.com/

你可能感兴趣的文章
Winform开发框架之权限管理系统改进的经验总结(4)--用户分级管理
查看>>
SQLSERVER PRINT语句的换行
查看>>
Web Service 的工作原理
查看>>
tesseract ocr文字识别Android实例程序和训练工具全部源代码
查看>>
嵌入式操作系统的调试
查看>>
DroidPHP-A PHP Webserver for android
查看>>
iOS用全局宏的概念理解xcode中的设置 preprocessor macros
查看>>
浮沉乱世,一些话对自己说
查看>>
桌面应用框架 OneRing
查看>>
解决Boost.Regex对中文支持不好的问题
查看>>
Error : Weblogic Maven Plugin deployment WebLogic 12c
查看>>
W3C小组宣布:HTML5标准制定完成
查看>>
dispatch_group_async 使用详解
查看>>
3d引擎列表
查看>>
[Ant] Ant之MacroDef—“宏
查看>>
WEB架构师成长之路-架构师都要懂哪些知识 转
查看>>
C#中使用TCP通信
查看>>
Swift入门篇-swift简介
查看>>
05 继承
查看>>
弧度和角度的转换
查看>>