程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> ipv6完成udp編程示例

ipv6完成udp編程示例

編輯:關於C++

ipv6完成udp編程示例。本站提示廣大學習愛好者:(ipv6完成udp編程示例)文章只能為提供參考,不一定能成為您想要的結果。以下是ipv6完成udp編程示例正文


開辟測試情況:WIN7SP1、VS2005

UdpServer.cpp

#include <iostream>
#include <WinSock2.h>
#include <ws2tcpip.h>

#pragma comment(lib, "ws2_32.lib")

int main(int argc, char** argv)
{
 using namespace std;

 cout<<"Server Start..."<<endl;

 WORD wVersion = 0;
 WSADATA wsaData;
 memset(&wsaData, 0, sizeof(wsaData));
 wVersion = MAKEWORD(2, 2);

 if (0 != WSAStartup(wVersion, &wsaData))
 {
  return -1;
 }

 if (2 != LOBYTE(wsaData.wVersion) || 2 != HIBYTE(wsaData.wVersion))
 {
  WSACleanup();
  return -1;
 }

 struct addrinfo hints;
 struct addrinfo* res = NULL;
 memset(&hints, 0, sizeof(hints));
 hints.ai_family = AF_UNSPEC;
 hints.ai_socktype = SOCK_DGRAM;
 hints.ai_protocol = IPPROTO_UDP;
 hints.ai_flags = AI_PASSIVE;

 if (0 != getaddrinfo("192.168.0.19", "6677", &hints, &res))
 {
  WSACleanup();
  return -1;
 }

 SOCKET sk = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
 bind(sk, res->ai_addr, res->ai_addrlen);

 char recvBuf[1024] = {'\0'};
 int lenRecv = 0;

 struct sockaddr_storage storage;
 int len = sizeof(storage);
 memset(&storage, 0, len);

 lenRecv = recvfrom(sk, recvBuf, 1024, 0, (struct sockaddr*)&storage, &len);
 cout<<"Recv From Client:"<<recvBuf<<" Len:"<<lenRecv<<endl;
 sendto(sk, recvBuf, lenRecv, 0, (struct sockaddr*)&storage, len);

 WSACleanup();
 closesocket(sk);

 return 0;
}

UdpClient.cpp

#include <iostream>
#include <WinSock2.h>
#include <ws2tcpip.h>

#pragma comment(lib, "ws2_32.lib")

int main(int argc, char** argv)
{
 using namespace std;

 cout<<"Client Start..."<<endl;

 WORD wVersion = 0;
 WSADATA wsaData;
 memset(&wsaData, 0, sizeof(wsaData));
 wVersion = MAKEWORD(2, 2);

 if (0 != WSAStartup(wVersion, &wsaData))
 {
  return -1;
 }

 if (2 != LOBYTE(wsaData.wVersion) || 2 != HIBYTE(wsaData.wVersion))
 {
  WSACleanup();
  return -1;
 }

 struct addrinfo hints;
 struct addrinfo* res = NULL;
 memset(&hints, 0, sizeof(hints));
 hints.ai_family = AF_UNSPEC;
 hints.ai_socktype = SOCK_DGRAM;
 hints.ai_protocol = IPPROTO_UDP;
 hints.ai_flags = AI_CANONNAME;

 if (0 != getaddrinfo("192.168.0.19", "6677", &hints, &res))
 {
  WSACleanup();
  return -1;
 }

 SOCKET sk = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
 bind(sk, res->ai_addr, res->ai_addrlen);

 char recvBuf[1024] = {'\0'};
 char sendBuf[1024] = {"abcd"};
 int len = res->ai_addrlen;
 int lenRecv = 0;

 sendto(sk, sendBuf, strlen(sendBuf), 0, res->ai_addr, len);
 lenRecv = recvfrom(sk, recvBuf, 1024, 0, res->ai_addr, &(len));
 cout<<"Recv From Server:"<<recvBuf<<" Len:"<<lenRecv<<endl;

 WSACleanup();
 closesocket(sk);

 return 0;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved