C++ Socket 网络编程UDP的封装

注意的是接收信息必须绑定端口号

socket 把网络协议用c语言封装为一个个函数,放到dll中供其他语言调用。 


udp.h 其中.c代码就用到了extern 

#ifndef UDP_H
#define UDP_H
#ifdef __cplusplus
  extern "C"
  {
  int socket_send();
   int socket_rev();

#endif

// Your prototype or Definition
#ifdef __cplusplus
  }
#endif

#endif


udp.c

#include "udp.h"
#include<winsock2.h>
#include<string.h>
#include<stdio.h>
int socket_send()
{
    DWORD ver;
    WSADATA wsaData;
    ver=MAKEWORD(1,1);

    WSAStartup(ver,&wsaData);

    SOCKET st=socket(AF_INET,SOCK_DGRAM,0);

    struct sockaddr_in addr;
    memset(&addr,0,sizeof(addr));
    addr.sin_family=AF_INET;
    addr.sin_port=htons(8080);
    addr.sin_addr.s_addr=inet_addr("127.0.0.1");

    char buf[1024]={0};
    strcpy(buf,"hello world");
   size_t rc= sendto(st,buf,strlen(buf),0,(struct sockaddr*)&addr,sizeof(addr));
   closesocket(st);
   WSACleanup();

    return rc;



}


int socket_rev()
{
    DWORD ver;
    WSADATA wsaData;
    ver=MAKEWORD(1,1);

    WSAStartup(ver,&wsaData);

    SOCKET st=socket(AF_INET,SOCK_DGRAM,0);

    struct sockaddr_in addr;
    memset(&addr,0,sizeof(addr));
    addr.sin_family=AF_INET;
    addr.sin_port=htons(8080);
    addr.sin_addr.s_addr=htonl(INADDR_ANY);
    int rc=0;
    if(bind(st,(struct sockaddr*)&addr,sizeof(addr))>-1)
    {
       char buf[1024]={0};
       struct sockaddr_in sendaddr;
       int len=sizeof(sendaddr);

       memset(&sendaddr,0,sizeof(sendaddr));
      rc= recvfrom(st,buf,sizeof(buf),0,(struct sockaddr*)&addr,&len);
      // size_t rc= sendto(st,buf,strlen(buf),0,(struct sockaddr*)&addr,sizeof(addr));
    printf("%s",buf);
    };
 closesocket(st);
   WSACleanup();

    return rc;
}



主函数

#include <iostream>
#include "udp.h"


using namespace std;

int main(int argc,char *args[])
{  if(argc>1)
    {
        if(args[1][0]=='1')
        socket_send();
        else {
            socket_rev();
        }
    }

 //   cout << "Hello World!" << endl;
    return 0;
}


1等待输入

C++ Socket 网络编程UDP的封装

C++ Socket 网络编程UDP的封装


2进行发送

C++ Socket 网络编程UDP的封装

C++ Socket 网络编程UDP的封装



3接收打印发送信息


C++ Socket 网络编程UDP的封装

C++ Socket 网络编程UDP的封装







C++ Socket 网络编程UDP的封装

C++ Socket 网络编程UDP的封装


相关文章: