socket

来源:互联网 发布:优盘安装ubuntu 编辑:程序博客网 时间:2024/05/16 09:51

//socket_server

 

#include <winsock2.h>
#include <iostream>
//using namespace std;

void main()
{
 std::cout << "Start up tcp server./n";

 WSADATA wsaData;
 WORD sockVersion = MAKEWORD(2, 0);
 if(0 != WSAStartup(sockVersion, &wsaData))
 {
  std::cout << "Failed to retrive socket verson./n";
  return;
 }
 SOCKET sock_sev;
 sock_sev = socket(AF_INET,SOCK_STREAM, 0);
 if(INVALID_SOCKET == sock_sev)
 {
  std::cout << "Invalid socket."<< std::endl;
  WSACleanup();
  return;
 }
 sockaddr_in addr_sev;
 addr_sev.sin_family = AF_INET;
 addr_sev.sin_port = htons(6111);
 addr_sev.sin_addr.S_un.S_addr = INADDR_ANY;

 if(SOCKET_ERROR == bind(sock_sev, (sockaddr*)&addr_sev, sizeof(addr_sev)))
 {
  std::cout << "Failed to bind" << std::endl;
  WSACleanup();
  return;
 }
 if(SOCKET_ERROR == listen(sock_sev, 10))
 {
  std::cout << "Failed to listen./n";
  WSACleanup();
  return;
 }
 
 SOCKET sock_client;
 sockaddr_in addr_client;
 int nAddrLen = sizeof(addr_client);
 while(true)
 {
  char tmp[100];

  sock_client = accept(sock_sev, (sockaddr*)&addr_client, &nAddrLen);
  

  if(INVALID_SOCKET == sock_client)
  {
   std::cout << "Failet to accept./n";
   continue;
  }
  
  sprintf(tmp, "Your IP is %s/n", inet_ntoa(addr_client.sin_addr));
  send(sock_client, tmp, strlen(tmp), 0);
  std::cout << "Connection from " << inet_ntoa(addr_client.sin_addr) <<std::endl;
  
       
  char crecv[100];
  int loop = 10;
  while(loop > 0)
  {
   recv(sock_client, crecv, 100, 0); 
   std::cout << "recv from client: " << crecv << std::endl;

   loop--;
  }

  closesocket(sock_client);
  
 }
 
}

 

//socket_client

#include <winsock2.h>
#include <iostream>
#include <windows.h>

void main()
{
 std::cout << "Start up tcp client./n";

 WSADATA wsaData;
 WORD sockVersion = MAKEWORD(2,0);
 if(0 != WSAStartup(sockVersion, &wsaData))
 {
  std::cout << "Failed to retrive socket version./n";
  return;
 }

 SOCKET sock_client;
 sock_client = socket(AF_INET, SOCK_STREAM, 0);
 if(INVALID_SOCKET == sock_client)
 {
  std::cout <<"Invalid socket./n";
  WSACleanup();
  return;
 }
 sockaddr_in addr_sev;
 addr_sev.sin_family = AF_INET;
 addr_sev.sin_port = htons(6111);
 addr_sev.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
 if(SOCKET_ERROR == connect(sock_client, (sockaddr*)&addr_sev, sizeof(addr_sev)))
 {
  std::cout << "Failed to connect./n";
  WSACleanup();
  return;
 }
 
 char buf[100];
 int recv_size = 0;
 recv_size = recv(sock_client, buf, 100, 0);

 if(100 > recv_size)
 {
  buf[recv_size] = '/0';
  std::cout << "receive data is: "<< buf << std::endl;
  memset(buf, 0, sizeof(buf));
 }
 else
 {
  std::cout << "receive data is overflow" << std::endl;
 }
 
 int loop = 10;
 char input[100];
 while(loop > 0)
 {
  std::cout << "please input the words: ";
  gets(input);
  //send(sock_client, "this is client", strlen("this is client")+1, 0);
  send(sock_client, input, strlen(input)+1, 0);
  Sleep(1000);

  loop--;
 }

 char recvInfo[100];
 recv(sock_client, recvInfo, 100, 0);

 closesocket(sock_client);
 WSACleanup();
 
 return;
}

 

注:在Project->Settings->link选项卡中的Object/library modules: 添加ws2_32.lib

原创粉丝点击