大胖的部落格

Just a note

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks


服务器端:
1、创建一个套接字,并调用bind()与本机地址绑定。
2、使用recvfrom接收数据。

客户端:
1、创建一个套接字。
2、使用sendto向目标地址发送数据。

收发数据:
sendto:向目标地址发送数据。
recvfrom:接收数据,和发送端地址。

结束通信:
closesocket:关闭套接字



服务器端:

    //初始化使用socket函数要用到的dll
    WSADATA wd;
    ::WSAStartup(MAKEWORD(
2,2), &wd);

    
//本机地址信息
    sockaddr_in addr;
    addr.sin_family            
= AF_INET;
    addr.sin_port            
= htons(5000);
    addr.sin_addr.s_addr    
= inet_addr("127.0.0.1");

    
//创建套接字,并与本机地址绑定
    SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);
    ::bind(s, (
const sockaddr*)&addr, sizeof(addr));

    
//用来保存数据发送端的地址
    sockaddr_in client_addr;
    
int fromlen = sizeof(sockaddr_in);
    
//收数据
    while(1)
    
{
        
char cBuffer[1024= {0};
        ::recvfrom(s, cBuffer, 
10240, (sockaddr*)&client_addr, &fromlen);
        cout
<<inet_ntoa(client_addr.sin_addr)<<endl<<cBuffer<<endl;
    }


    
//关闭套接字
    ::closesocket(s);

    
//ws2.dll的收尾工作
    ::WSACleanup();


客户端:
    //初始化使用socket函数要用到的dll
    WSADATA wd;
    WSAStartup(MAKEWORD(
2,2), &wd);

    
//服务器地址信息
    sockaddr_in addr;
    addr.sin_family            
= AF_INET;
    addr.sin_port            
= htons(5000);
    addr.sin_addr.s_addr    
= inet_addr("127.0.0.1");

    
//创建套接字
    SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);

    
//向目标地址发送数据
    while(1)
    
{
        
char cData[1024= {0};
        cin
>>cData;
        ::sendto(s, cData, (
int)strlen(cData)+10, (sockaddr*)&addr, sizeof(sockaddr_in));
    }


    
//关闭套接字
    ::closesocket(s);

    
//ws2.dll的收尾工作
    ::WSACleanup();
posted on 2009-06-26 16:06 大胖 阅读(317) 评论(0)  编辑 收藏 引用 所属分类: Win32

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理