TCP Socket編程 C/C++實現 (Windows Platform SDK)

來源:互聯網
上載者:User

 

通訊

Server:

 

 

#pragma comment(lib, "ws2_32.lib")  
 
#include <Winsock2.h>  
 
#include <stdio.h>   
  
  
  
void main()   
  
{   
  
    //版本協商   
  
    WORD wVersionRequested;   
  
    WSADATA wsaData;   
  
    int err;   
  
       
  
    wVersionRequested = MAKEWORD(1,1); //0x0101   
  
    err = WSAStartup(wVersionRequested,&wsaData);   
  
    if(err!=0)   
  
    {   
  
        return;   
  
    }   
  
       
  
    if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1)    
  
        //wsaData.wVersion!=0x0101   
  
    {   
  
        WSACleanup();   
  
        return;   
  
    }   
  
    //建立Socket   
  
    SOCKET sockSvr = socket(AF_INET,SOCK_STREAM,0);   
  
    //建立IP地址和連接埠   
  
    SOCKADDR_IN addrSvr;   
  
    addrSvr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);   
  
    addrSvr.sin_family = AF_INET;   
  
    addrSvr.sin_port = htons(6000);   
  
    //綁定連接埠監聽   
  
    bind(sockSvr,(SOCKADDR*)&addrSvr,sizeof(SOCKADDR));   
  
    listen(sockSvr,5);   
  
       
  
    sockaddr_in addrClient;   
  
    int len = sizeof(sockaddr);   
  
    while(true)   
  
    {   
  
        //阻塞方法,獲得一個客戶Socket串連   
  
        SOCKET sockConn = accept(sockSvr,(sockaddr*)&addrClient,&len);   
  
        char sendbuffer[128];   
  
        sprintf(sendbuffer,"Welcom %s!",inet_ntoa(addrClient.sin_addr));   
  
        //向客戶Socket發送資料   
  
        send(sockConn,sendbuffer,strlen(sendbuffer)+1,0);   
  
        char recvbuffer[128];   
  
        //從客戶Soc接受資料   
  
        recv(sockConn,recvbuffer,128,0);   
  
        printf("%s\n",recvbuffer);   
  
        //關閉Socket   
  
        closesocket(sockConn);   
  
    }   
  
    closesocket(sockSvr);   
  
    //釋放Winsock資源   
  
    WSACleanup();   
  
}  

client:

 

#pragma comment (lib,"ws2_32.lib")  
 
#include <Winsock2.h>  
 
#include <stdio.h>   
  
  
  
void main()   
  
{   
  
    //版本協商   
  
    WORD wVersionRequested;   
  
    WSADATA wsaData;   
  
    int err;   
  
       
  
    wVersionRequested = MAKEWORD(1,1); //0x0101   
  
    err = WSAStartup(wVersionRequested,&wsaData);   
  
    if(err!=0)   
  
    {   
  
        return;   
  
    }   
  
       
  
    if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1)    
  
        //wsaData.wVersion!=0x0101   
  
    {   
  
        WSACleanup();   
  
        return;   
  
    }   
  
    //建立連向伺服器的通訊端   
  
    SOCKET sock = socket(AF_INET,SOCK_STREAM,0);   
  
    //建立地址資訊   
  
    SOCKADDR_IN hostAddr;   
  
    hostAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");   
  
    hostAddr.sin_family = AF_INET;   
  
    hostAddr.sin_port = htons(6000);   
  
    //串連伺服器   
  
    connect(sock,(sockaddr*)&hostAddr,sizeof(sockaddr));   
  
       
  
    char revBuf[128];   
  
    //從伺服器獲得資料   
  
    recv(sock,revBuf,128,0);   
  
    printf("%s\n",revBuf);   
  
    //向伺服器發送資料   
  
    send(sock,"Hello Host!",12,0);   
  
    closesocket(sock);   
  
}  

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.