源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

ipv6实现tcp编程示例

  • 时间:2021-07-17 21:40 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:ipv6实现tcp编程示例
开发测试环境:WIN7SP、 VS2005 TcpServer.cpp
[u]复制代码[/u] 代码如下:
#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_STREAM;  hints.ai_protocol = IPPROTO_TCP;  hints.ai_flags = AI_PASSIVE;  if (0 != getaddrinfo(NULL, "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);  if (0 != listen(sk, 5))  {   WSACleanup();   closesocket(sk);   return -1;  }  struct sockaddr_storage storage;  int len = sizeof(storage);  memset(&storage, 0, len);  SOCKET newSk = accept(sk, (struct sockaddr*)&storage, &len);  closesocket(sk);  char recvBuf[1024] = {'\0'};  int lenRecv = 0;  lenRecv = recv(newSk, recvBuf, 1024, 0);  cout<<"Recv From Client:"<<recvBuf<<" Len:"<<lenRecv<<endl;  send(newSk, recvBuf, lenRecv, 0);  WSACleanup();  closesocket(newSk);  return 0; }
TcpClient.cpp
[u]复制代码[/u] 代码如下:
#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_STREAM;  hints.ai_protocol = IPPROTO_TCP;  hints.ai_flags = AI_CANONNAME;  if (0 != getaddrinfo("123.123.123.19", "6677", &hints, &res))  {   WSACleanup();   return -1;  }  SOCKET sk = socket(res->ai_family, res->ai_socktype, res->ai_protocol);  if (0 != connect(sk, res->ai_addr, res->ai_addrlen))  {   WSACleanup();   closesocket(sk);   return -1;  }  char sendBuf[1024] = {"abcdef"};  char recvBuf[1024] = {'\0'};  int lenRecv = 0;  send(sk, sendBuf, strlen(sendBuf), 0);  lenRecv = recv(sk, recvBuf, 1024, 0);  cout<<"Recv From Server:"<<recvBuf<<" Len:"<<lenRecv<<endl;    WSACleanup();  closesocket(sk);  return 0; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部