`
abs200311235
  • 浏览: 122515 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

TCP/UDP Socket编程 C/C++实现(Windows Platform SDK)

阅读更多
TCP Socket编程 C/C++实现 (Windows Platform SDK)
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); 
}
转自:http://blog.csdn.net/nyzhl/archive/2008/07/04/2612815.aspx

UDP Socket编程 C/C++实现 (Windows Platform SDK)
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 ); 
    err = WSAStartup( wVersionRequested, &wsaData ); 
    if ( err != 0 ) { 
        /* Tell the user that we could not find a usable */
        /* WinSock DLL.                                  */
        return; 
    } 
    /* Confirm that the WinSock DLL supports 2.2.*/
    /* Note that if the DLL supports versions greater    */
    /* than 2.2 in addition to 2.2, it will still return */
    /* 2.2 in wVersion since that is the version we      */
    /* requested.                                        */
    if ( LOBYTE( wsaData.wVersion ) != 1 || 
        HIBYTE( wsaData.wVersion ) != 1) { 
        /* Tell the user that we could not find a usable */
        /* WinSock DLL.                                  */
        WSACleanup( ); 
         return;  
    } 
    /* The WinSock DLL is acceptable. Proceed. */
    //创建数据报套接字  
    SOCKET svr = socket(AF_INET,SOCK_DGRAM,0); 
    //创建本地地址信息 
    SOCKADDR_IN addr; 
    addr.sin_family = AF_INET; 
    addr.sin_port = htons(6000); 
    addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); 
   int len = sizeof(sockaddr); 
    bind(svr,(sockaddr*)&addr,len); 
    //创建客户端地址对象 
    SOCKADDR_IN addrClient; 
    char recvBuf[128]; 
    char sendBuf[128]; 
    char tempBuf[256];
    while(true) 
    { 
        //接收数据 
        recvfrom(svr,recvBuf,128,0,(sockaddr*)&addrClient,&len); 
        char* ipClient = inet_ntoa(addrClient.sin_addr); 
        sprintf(tempBuf,"%s said: %s\n",ipClient,recvBuf); 
        printf("%s",tempBuf); 
        gets(sendBuf); 
        //发送数据 
        sendto(svr,sendBuf,strlen(sendBuf)+1,0,(sockaddr*)&addrClient,len); 
    } 
    closesocket(svr); 
    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 );
    err = WSAStartup( wVersionRequested, &wsaData ); 
    if ( err != 0 ) { 
        /* Tell the user that we could not find a usable */
        /* WinSock DLL.                                  */
        return; 
    } 
    /* Confirm that the WinSock DLL supports 2.2.*/
    /* Note that if the DLL supports versions greater    */
    /* than 2.2 in addition to 2.2, it will still return */
    /* 2.2 in wVersion since that is the version we      */
    /* requested.                                        */
    if ( LOBYTE( wsaData.wVersion ) != 1 || 
        HIBYTE( wsaData.wVersion ) != 1 ) { 
        /* Tell the user that we could not find a usable */
        /* WinSock DLL.                                  */
        WSACleanup( ); 
        return;  
    } 

    /* The WinSock DLL is acceptable. Proceed. */
    //创建服务器套接字 
    SOCKET Svr = socket(AF_INET,SOCK_DGRAM,0); 
    //创建地址 
    SOCKADDR_IN addrSvr; 
    addrSvr.sin_family = AF_INET; 
    addrSvr.sin_port = htons(6000); 
    addrSvr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); 
    char recvBuf[128]; 
    char sendBuf[128]; 
    int len = sizeof(sockaddr); 
    while(true) 
    { 
        gets(sendBuf); 
        //发送数据 
        sendto(Svr,sendBuf,strlen(sendBuf)+1,0,(sockaddr*)&addrSvr,len); 
        //接收数据 
        recvfrom(Svr,recvBuf,128,0,(sockaddr*)&addrSvr,&len); 
        char* ipSvr = inet_ntoa(addrSvr.sin_addr); 
        printf("%s said: %s\n",ipSvr,recvBuf); 
    } 
    closesocket(Svr); 
    WSACleanup(); 
}
转自: http://blog.csdn.net/nyzhl/archive/2008/07/04/2612848.aspx
分享到:
评论

相关推荐

    TCP/UDP socket 调试工具

    TCP/UDP socket 调试工具 TCP/UDP socket 调试工具 SocketTool调试软件是一款网络TCP/UDP通信调试工具,本工具集功能强大与简单易用为一体,是无需安装的免费绿色软件。她可以帮助网络编程人员、网络维护人员检查所...

    TCP/UDP Socket调试工具 V2.3

    TCP/UDP Socket调试工具 V2.3

    TCP/UDP Socket调试工具

    TCP/UDP Socket调试工具 V2.3是网络软件测试开发必备工具,对网络开发测试起到很大的帮助作用。可设置成TCP/UDP的Server端和Client端

    TCP/UDP Socket 调试工具

    TCP/UDP Socket 调试工具TCP/UDP Socket 调试工具

    tcp/udp socket编程

    基于TCP协议的Socket编程 ① 创建TCP服务端步骤: a) 创建一个ServerSocket对象 b) 调用accept()方法接受客户端请求 c) 从Socket中获取I/O流 d) 对I/O流进行读写操作,完成与客户端的交互 e) 关闭I/O流和...

    tcp/udp socket调试工具

    tcp/udp socket 组播通讯测试工具。调试工具提供了TCP Server,TCP Client,UDP Server,UDP Client,UDP Group 五种Socket调试方案

    SocketTool (TCP/UDP Socket 调试工具 V2.2)

    SocketTool (TCP/UDP Socket 调试工具 V2.2) 该工具可以模拟Socket服务端或者客户端。 操作简单,易用。

    Java TCP/IP Socket编程

    Java TCP/IP Socket编程 Java TCP/IP Socket编程 Java TCP/IP Socket编程

    Socket网络TCP/UDP通信调试工具

    SocketTool调试工具官方版是一款网络TCP/UDP通信调试工具。SocketTool调试工具最新版可以有效地帮助网络管理员检测各种网络通信状永久,集成了TCP服务器/客户端、UDP服务器/客户端和UDP广播/组播等功能。SocketTool...

    linux ipv6简单tcp/udp socket通信

    linux下ipv6简单的tcp/udp socket通信,代码测试通过,具体可以参考: http://blog.csdn.net/zhengxianghdu/article/details/14106167

    java TCP/IP socket 编程(原书第2版)pdf+源码

    java TCP/IP socket 编程(原书第2版)+部分源码,对于想学习java socket编程很有帮助!

    Qt通过TCP/UDP实现网络通信

    Qt通过TCP/UDP实现网络通信Qt通过TCP/UDP实现网络通信Qt通过TCP/UDP实现网络通信Qt通过TCP/UDP实现网络通信Qt通过TCP/UDP实现网络通信Qt通过TCP/UDP实现网络通信Qt通过TCP/UDP实现网络通信Qt通过TCP/UDP实现网络通信...

    Java TCP IP Socket编程(原书第2版).

    《Java TCP/IP Socket编程(原书第2版)》基于TCP/IP Socket相关原理,对如何在Java中进行Socket编程作了深入浅出的介绍。《Java TCP/IP Socket编程(原书第2版)》内容简明扼要,条理清晰,并在讲解相应的概念或编程...

    TCP和UDP socket调试工具V2.2

    用户测试socket通讯,udp,tcp都可以使用,设定好ip地址和端口,参数点击发送就行。打开后解压直接使用,有个socke+xml通讯的截图案例。

    socket(TCP/UDP)编程源码

    socket(TCP/UDP)编程源码,socket(TCP/UDP)编程源码,socket(TCP/UDP)编程源码

    05_TCPsocket_tcp/udp_LINUXTCP_

    TCP/UDP socket等知识的详细具体又容易理解地学习资料

Global site tag (gtag.js) - Google Analytics