⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.c

📁 TCP/IP 编程方面的编程在此。这里面一个用于服务器的编程
💻 C
字号:

#include <stdio.h>
// #include <stdlib.h>
// #include <Winsock2.h> 

#define DEFAULT_PORT 5050
#define DATA_BUFFER 1024

void main1(int argc, char *argv[])
{              
  WSADATA wsaData;
  SOCKET sClient;
  int iPort=DEFAULT_PORT;
   
  //client address length 
  int iLen;
  
  // sending data length 
  int iSend;
  
  //receiving data length
  int iRecv;
  
  //messeger to client
  char send_buf[]="Hello, I am a beginner !";
  
  //data buffer to receive
  char recv_buf[DATA_BUFFER];
  
  //server address and client address
  struct sockaddr_in  ser, cli;
  
  printf("----------------");
  printf("Server waiting \n");
  printf("----------------");
  
  if(WSAStartup(MAKEWORD(2,2),&wasData)!=0);
  {
   printf("failed to load windsock. \n");
   return;
  }
  
  //generate server socket 
  sSocket=socket(AF_INET,SOCK_DGRAM,0);
  if(sSocket==INVALIDE_SOCKET)
  {
    printf("socket() failed: %d \n",WSAGetLastError());
    return;
  }
  
  //buildup following server address
  ser.sin_family=AF_INET;
  
  //htons() function transfer a double byte order number of a host computer 
  // to internet byte order number
  ser.sin_port=htons(iPort);
  
  //htonl() function transfer a double byte order number of a host computer 
  // to internet byte order number
  ser.sin_addr=htonl(INADDR_ANY);
  if(bind(sSocket,(LPSOCKADDR)&ser,sizeof(ser))=SOCKET_ERROR)
  {
    printf("bind() failed: %d\n",WSAGetLastError());
    return;
  }
  
  iLen=sizeof(cli);
  
  //initialize the receiving buffer
  memset(recv_buf,o, sizeof(recv_buf);
  
  while(1)
  {
    
    //receive data from client 
    iRecv=recvfrom(sSocket,recv_buf,DATA_BUFFER,0,(SOCKETADDR*)&cli, &iLen);
    
    if(iRecv==SOCKET_ERROR)
    {
      printf("recvfrom() failed: %d \n", WSAGetLastError());
      break;
      }
    else if(iRecv==0)
      break;
      else
      {
        //output received data
        printf("recvfrom(): %s\n", recv_buf);
        //output client IP address and terminal number 
        printf("accepted client IP:[%s],port:[%d]\n, 
        inet_ntoa(cli.sin_addr), 
        ntohs(cli.sin_port));
        
        }
    //send msg to client
    iSend=sendto(sSocket, send_buf,sizeof(send_buf),0,(SOCKADDR*)&cli,sizeof(cli);
    
    if(iSend==SOCKET_ERROR) 
    {
      printf("sendto() failed.:%d\n",WSAGetLastError());
      break;
    }
    else if(iSend==0)
         break;
         else
         {
           printf("sendto() succeed !\n");
         }
         
    }
    closesocket(sSocket);
    WSACleanup();
   }
    
        
    
    
        
  
  
    
   
  
  

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -