TCP 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 ) {  
         
         
        return;  
    
     
     
     
     
     
    if ( LOBYTE( wsaData.wVersion ) != 1 ||  
        HIBYTE( wsaData.wVersion ) != 1) {  
         
         
        WSACleanup( );  
         return;   
    
     
    //创建数据报套接字   
    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 ) {  
         
         
        return;  
    
     
     
     
     
     
    if ( LOBYTE( wsaData.wVersion ) != 1 ||  
        HIBYTE( wsaData.wVersion ) != 1 ) {  
         
         
        WSACleanup( );  
        return;   
    

     
    //创建服务器套接字  
    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.sina.com.cn/s/blog_4b6068cc0100iuf6.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值