VC+Socket 网络通讯示例

Cpp代码   收藏代码
  1.  VC+Socket 网络通讯示例  收藏  
  2.   
  3. 服务器端示例代码  
  4.   
  5. #include <stdio.h>  
  6. #include <winsock.h>  
  7. #include <windows.h>  
  8.   
  9. #define SERVER_SOCKET_ERROR 1  
  10. #define SOCKET_OK 0  
  11.   
  12. #pragma comment(lib, "wsock32.lib")  
  13.   
  14. void socketError(char*);  
  15.   
  16. int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance,   
  17.                     LPSTR lpCmdLine, int nShow)  
  18. {  
  19.     WORD sockVersion;  
  20.     WSADATA wsaData;  
  21.     int rVal;  
  22.   
  23.     sockVersion = MAKEWORD(1,1);  
  24.     //start dll  
  25.     WSAStartup(sockVersion, &wsaData);  
  26.   
  27.     //create socket  
  28.     SOCKET s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);  
  29.   
  30.     if(s == INVALID_SOCKET)  
  31.     {  
  32.         socketError("Failed socket()");  
  33.         WSACleanup();  
  34.         return SERVER_SOCKET_ERROR;  
  35.     }  
  36.   
  37.     //fill in sockaddr_in struct   
  38.   
  39.     SOCKADDR_IN sin;  
  40.     sin.sin_family = PF_INET;  
  41.     sin.sin_port = htons(8888);  
  42.     sin.sin_addr.s_addr = INADDR_ANY;  
  43.   
  44.     //bind the socket  
  45.     rVal = bind(s, (LPSOCKADDR)&sin, sizeof(sin));  
  46.     if(rVal == SOCKET_ERROR)  
  47.     {  
  48.         socketError("Failed bind()");  
  49.         WSACleanup();  
  50.         return SERVER_SOCKET_ERROR;  
  51.     }  
  52.   
  53.     //get socket to listen   
  54.     rVal = listen(s, 2);  
  55.     if(rVal == SOCKET_ERROR)  
  56.     {  
  57.         socketError("Failed listen()");  
  58.         WSACleanup();  
  59.         return SERVER_SOCKET_ERROR;  
  60.     }  
  61.   
  62.     //wait for a client  
  63.     SOCKET client;  
  64.   
  65.     client = accept(s, NULL, NULL);  
  66.   
  67.     if(client == INVALID_SOCKET)  
  68.     {  
  69.         socketError("Failed accept()");  
  70.         WSACleanup();  
  71.         return SERVER_SOCKET_ERROR;  
  72.     }  
  73.   
  74.     //close process  
  75.     closesocket(client);  
  76.     closesocket(s);  
  77.   
  78.     WSACleanup();  
  79.   
  80.     return SOCKET_OK;  
  81. };  
  82.   
  83. void socketError(char* str)  
  84. {  
  85.     MessageBox(NULL, str, "SOCKET ERROR", MB_OK);  
  86. };  
  87.   
  88. 客户端示例代码  
  89.   
  90. #include <windows.h>  
  91. #include <winsock.h>  
  92.   
  93. #pragma comment(lib, "wsock32.lib")  
  94.   
  95. #define CS_ERROR 1  
  96. #define CS_OK 0  
  97.   
  98. void sError(char*);  
  99.   
  100. int WINAPI WinMain(HINSTANCE hHinst, HINSTANCE hPrevHinst, LPSTR lpCmdLine,   
  101.                    int nShow)  
  102. {  
  103.   
  104.     WORD version;  
  105.     WSADATA wsaData;  
  106.     int rVal=0;  
  107.   
  108.     version = MAKEWORD(1,1);  
  109.   
  110.     WSAStartup(version,(LPWSADATA)&wsaData);  
  111.   
  112.     LPHOSTENT hostEntry;  
  113.   
  114.     //store information about the server  
  115.     hostEntry = gethostbyname("hibbert");  
  116.   
  117.     if(!hostEntry)  
  118.     {  
  119.         sError("Failed gethostbyname()");  
  120.         //WSACleanup();  
  121.         return CS_ERROR;  
  122.     }  
  123.   
  124.     //create the socket  
  125.     SOCKET theSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);  
  126.   
  127.     if(theSocket == SOCKET_ERROR)  
  128.     {  
  129.         sError("Failed socket()");  
  130.         return CS_ERROR;  
  131.     }  
  132.   
  133.     //Fill in the sockaddr_in struct  
  134.     SOCKADDR_IN serverInfo;  
  135.   
  136.     serverInfo.sin_family = PF_INET;  
  137.     serverInfo.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list);  
  138.   
  139.     serverInfo.sin_port = htons(8888);  
  140.   
  141.     rVal=connect(theSocket,(LPSOCKADDR)&serverInfo, sizeof(serverInfo));  
  142.     if(rVal==SOCKET_ERROR)  
  143.     {  
  144.         sError("Failed connect()");  
  145.         return CS_ERROR;  
  146.     }  
  147.   
  148.     closesocket(theSocket);  
  149.     WSACleanup();  
  150.     MessageBox(NULL, "Connection was made""SOCKET", MB_OK);  
  151.     return CS_OK;  
  152. }  
  153.   
  154. void sError(char *str)  
  155. {  
  156.     MessageBox(NULL, str, "SOCKET ERROR", MB_OK);  
  157.     WSACleanup();  
  158. }  
光 盘 说 明 为了方便读者学习,本书附带了一张光盘,下面对光盘内容及使用方法进行简要的介绍。 1.光盘的运行环境 硬件环境:CPU的主频在200MHz以上、内存在64MB以上。 软件平台:操作系统为Windows 98/Me/NT/2000/XP(推荐使用Windows 2000/XP),调试环境为Visual C++ 6.0及其以上版本(如果不做说明,则默认为Visual C++ 6.0)。 2.光盘的使用方法及注意事项 将本书的源代码拷入硬盘中,用Visual C++打开项目文件,即可编译运行。 3.光盘的主要内容 光盘中存放的是书中涉及的所有实例的源代码和经过编译后的应用程序。所有程序均经过测试,仅供读者学习时使用,不能用作其他商业用途。如果使用时遇到任何问题,请发Email至Fourwei@zj.com,我们将提供全面的解答。 4.光盘目录 (1)基本网络编程实例 Winsock实现网络聊天室【\chap1\ChatRoom(Winsock)】 CSocket实现聊天室【\chap1\ChatRoom(Csocket)】 (2)本地计算机网络编程实例 获取计算机的名称和IP地址【\chap2\Local】 获取计算机的子网掩码【\chap2\ Local】 获取计算机的DNS设置【\chap2\ Local】 获取计算机的网卡地址【\chap2\ Local】 获取计算机安装的协议【\chap2\ Local】 获取计算机提供的服务【\chap2\ Local】 获取计算机的所有网络资源【\chap2\ Local】 修改本地计算机的所有网络设置【\chap2\ Local】 获取计算机TCP/IP协议的所有信息【\chap2\ Local】 (3)局域网网络通信编程实例 获取网上邻居【\chap3\Neighbor】 lIP地址和计算机名之间的转换【\chap3\Neighbor】 l映射网络驱动器【\chap3\Neighbor】 l消息发送程序Net Send【\chap3\Neighbor】 l获取局域网内其他计算机的信息【\chap3\ NeighborInfo】 (4)IE编程实例 简单的浏览器的实现【\chap4\MyBrowser】 删除IE相关历史记录【\chap4\DelHistory】 将应用程序加入到IE工具栏【\chap4\AddToToolBar】 超级链接的实现【\chap4\HyperLink】 禁止IE的弹出窗口【\chap4\StopPopup】 禁止浏览某些网站【\chap4\StopTravel】 IE收藏夹【\chap4\ MyBrowser】 创建桌面快捷方式和活动桌面【\chap4\ShortCut】 (5)基本网络编程实例 点对点文件传输【\chap5\Transfer】 大型文件传输【\chap5\Transfer】 端口扫描程序【\chap5\ MyPortScanner】 Finger编程【\chap5\MyFinger】 Sniff编程【\chap5\MySniff】 Internet文件下载【\chap5\ InternetDownload】 (6)网络通信协议编程 FTP协议【\chap6\FTP】 Email协议【\chap6\Email】 ICMP协议【\chap6\ICMP】 RAS协议【\chap6\RAS】 TAPI协议【\chap6\TAPI】 Telnet协议【\chap6\Telnet】 HTTP协议 【\chap6\HTTP】 (7)Modem /串口通信编程 Modem编程【\chap7\Modem】 MSCOMM控件编程【\chap7\MSCOMM】 串口通信API编程【\chap7\MySerialCom】 (8)代理服务器编程实例 Socks 5协议编程【\chap8\Socks5】 HTTP代理服务器【\chap8\HTTP代理服务】 (9)高级网络通信编程实例 串口通信编程实例【\chap9\SerialPort】 网络流量监控【\chap9\NetTraffic】 网站下载【\chap9\ Snag】 网络五子棋系统【\chap9\FiveChess】 语音聊天【\chap9\ ChatRoom】 远程监控【\chap9\RemoteControl】 赠送实例 类似网络蚂蚁的断点续传程序【\Appendix\NetAnts】 网络多播程序【\Appendix\BroadCast】 界面美观的文字聊天程序【\Appendix\Chat】 语音电话【\Appendix\PhoneCall】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值