网络编程 - Sever

  1 // Server.cpp : 定义控制台应用程序的入口点。
  2 //
  3 
  4 #include "stdafx.h"
  5 #include <iostream>
  6 #include <winsock2.h>
  7 
  8 #pragma comment(lib, "ws2_32.lib")        // 加载静态库
  9 
 10 using namespace std;
 11 
 12 int _tmain(int argc, _TCHAR* argv[])
 13 {
 14     ////////////////////////////////【1.加载套接字】///////////////////////////////
 15     //
 16     WSADATA wsaData;
 17     // 等于0 说明创建套接字成功, 否则失败!
 18     if ( 0 != WSAStartup(MAKEWORD(2, 2), &wsaData) )
 19     {
 20         cout<< "【WSAStartup】失败!\n" << endl;
 21         return 0;
 22     }
 23     cout<< "加载套接字成功^_^\n" << endl;
 24 
 25 
 26     ////////////////////////////////【2.创建套接字】///////////////////////////////
 27     //
 28     SOCKET m_Sock;
 29     m_Sock = socket(AF_INET, SOCK_STREAM, 0);
 30     if (INVALID_SOCKET == m_Sock)
 31     {
 32         cout<< "【socket】失败!\n" << endl;
 33         WSACleanup();
 34         return 0;
 35     }
 36     cout<< "创建套接字成功^_^\n" << endl;
 37 
 38 
 39     ////////////////////////////////【3.绑定套接字】///////////////////////////////
 40     //
 41     sockaddr_in    bindAddr;
 42     bindAddr.sin_family = AF_INET;                    // 协议族
 43     bindAddr.sin_port    = htons(9527);                    // 端口:9527 , 1234
 44     bindAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);        // 任何IP地址:127.0.0.1
 45     int nBindRet = bind(m_Sock, (sockaddr*)&bindAddr, sizeof(sockaddr_in));
 46     if ( SOCKET_ERROR == nBindRet )
 47     {
 48         cout<< "【bind】失败!\n" << endl;
 49         closesocket(m_Sock);    // 关闭套接字
 50         WSACleanup();        // 卸载套接字
 51         return 0;
 52     }
 53     cout<< "绑定套接字成功^_^\n" << endl;
 54 
 55 
 56     ////////////////////////////////【4.监听套接字】///////////////////////////////
 57     //
 58     int nListenRet = listen(m_Sock, 5);        // 最大能监听5个
 59     if ( SOCKET_ERROR == nListenRet )
 60     {
 61         cout<< "【listen】失败!\n" << endl;
 62         closesocket(m_Sock);
 63         WSACleanup();
 64         return 0;
 65     }
 66     cout<< "Listening . . .\n" << endl;
 67 
 68 
 69     ////////////////////////////////【5.接受套接字】///////////////////////////////
 70     //
 71     SOCKET    accSock;    // 为服务端接受客户端连接成功后, 产生的用于与客户端通信的socket.
 72     sockaddr_in    accAddr;    // 接受客户端发送过来的 端口 / IP地址等信息
 73     int accSize = sizeof(sockaddr_in);
 74     accSock = accept(m_Sock, (sockaddr*)&accAddr, &accSize);
 75     if ( INVALID_SOCKET == accSize )
 76     {
 77         cout<< "【accept】失败!\n" << endl;
 78         closesocket(m_Sock);
 79         WSACleanup();
 80         return 0;
 81     }
 82     cout<< "成功连接客户端^_^\n" << endl;
 83 
 84     
 85     ////////////////////////////////【6.发送消息】///////////////////////////////
 86     //
 87     int nSend = send(accSock, "欢迎你登陆", sizeof("欢迎你登陆"), 0);
 88     if ( nSend <= 0 )
 89     {
 90         cout<< "【send】失败!\n" << endl;
 91         closesocket(accSock);
 92         closesocket(m_Sock);
 93         WSACleanup();
 94         return 0;
 95     }
 96 
 97     
 98     while (TRUE)
 99     {
100         ////////////////////////////////【7.接收消息】///////////////////////////////
101         //
102         char szRecvBuff[256] = { 0 };
103         int nRecv = recv(accSock, szRecvBuff, sizeof(szRecvBuff), 0);
104         if ( SOCKET_ERROR == nRecv )
105         {        
106             cout<< "【recv】失败!\n" << endl;
107             Sleep(50);
108             continue;
109         }
110         cout<< szRecvBuff << endl;
111 
112 
113         ////////////////////////////////【8.发送消息】///////////////////////////////
114         //
115         char szSendBuff[256] = { 0 };
116         cin>> szSendBuff;                // 向客户端发送的内容
117         int nSend2 = send(accSock, szSendBuff, sizeof(szSendBuff), 0);
118         if ( SOCKET_ERROR == nSend2 )
119         {        
120             cout<< "【send2】失败!\n" << endl;
121             Sleep(50);
122             continue;
123         }
124         
125     }
126 
127     getchar();
128     closesocket(m_Sock);
129     WSACleanup();
130     return 0;
131 }
View Code

 

posted @ 2016-07-07 17:04  C/C++/Python/Java  阅读(251)  评论(0编辑  收藏  举报