window API(UDP/IP)通讯

来源:互联网 发布:js的数据类型有哪些 编辑:程序博客网 时间:2024/06/06 12:26


SERVER端程序:

  1. #include <winsock2.h>
  2. #include <stdio.h>
  3. #pragma comment(lib,"Ws2_32")
  4. void main()
  5. {
  6.  SOCKET socket2;
  7.  WSADATA wsd;
  8.  
  9.  if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
  10.  {
  11.   printf("failed to load winsock library!/n");
  12.   return;
  13.  }
  14.  struct sockaddr_in local;
  15.  struct sockaddr_in from;
  16.  WORD port = 1000;
  17.  int fromlen =sizeof(from);
  18.  local.sin_family=AF_INET;
  19.  local.sin_port=htons(1000);             ///监听端口
  20.  local.sin_addr.s_addr=INADDR_ANY;       ///本机
  21.  socket2=socket(AF_INET,SOCK_DGRAM,0);
  22.  bind(socket2,(struct sockaddr*)&local,sizeof local);
  23.  while (1)
  24.  {
  25.   char buffer[1024]="/0";
  26.   printf("waiting for message from others-------------/n");
  27.   int state = recvfrom(socket2,buffer,sizeof(buffer),0,(struct sockaddr*)&from,&fromlen);
  28.   if (state!=SOCKET_ERROR)
  29.   {
  30.    printf("Received datagram from %s--%s/n",inet_ntoa(from.sin_addr),buffer);
  31.    ////给cilent发信息
  32.    strcpy(buffer,"server send to client");
  33.    sendto(socket2,buffer,sizeof buffer,0,(struct sockaddr*)&from,fromlen);
  34.    
  35.   }
  36.   else {
  37.    printf("error:%d/n",WSAGetLastError());
  38.   }
  39.   Sleep(500);
  40.  }
  41.  closesocket(socket2);
  42. }
CLIENT端程序:
  1. #include <winsock2.h>
  2. #include <stdio.h>
  3. #pragma comment(lib,"Ws2_32")
  4. void main()
  5. {
  6.  SOCKET socket1;
  7.  WSADATA wsd;
  8.  if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
  9.  {
  10.   printf("failed to load winsock library!/n");
  11.   exit(0);
  12.  }
  13.  struct sockaddr_in server;
  14.  int len =sizeof(server);
  15.  server.sin_family=AF_INET;
  16.  server.sin_port=htons(1000);                      ///server的监听端口,和server端设置要一致
  17.  server.sin_addr.s_addr=inet_addr("192.168.0.105"); ///server的地址,如果是本机运行就是本机的ip
  18.  socket1=socket(AF_INET,SOCK_DGRAM,0);
  19.  if(socket1 == INVALID_SOCKET)
  20.   printf("failed");
  21.  while (1)
  22.  {
  23.   char buffer[1024]="/0";
  24.   printf("input message/n");
  25.   scanf("%s",buffer);
  26.   if (strcmp(buffer,"bye")==0)
  27.    break;
  28.   if (sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&server,len)!=SOCKET_ERROR)
  29.   { 
  30.    if (recvfrom(socket1,buffer,sizeof  buffer, 0,(struct sockaddr*)&server,&len) != SOCKET_ERROR)
  31.     printf("rece from server:%s/n",buffer);
  32.    else
  33.     printf("recv():  failed!/n");
  34.   }
  35.   else
  36.    exit(0);
  37.  }
  38.  closesocket(socket1);
  39. }