Socket By udp

/*****UdpServ******/

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

void main()
{
 WORD wVersionRequested;
 WSADATA wsaData;
 int err;

 wVersionRequested = MAKEWORD(1, 1);
 err = WSAStartup(wVersionRequested, &wsaData);
 if(err != 0)
 {
  return;
 }

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

 SOCKET sockServ = socket(AF_INET, SOCK_DGRAM, 0);

 SOCKADDR_IN  addrServ;
 addrServ.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
 addrServ.sin_family = AF_INET;
 addrServ.sin_port = htons(6000);

 bind(sockServ, (SOCKADDR*)&addrServ, sizeof(SOCKADDR));
 
/* SOCKADDR_IN addrClient;
 int len = sizeof(SOCKADDR);
 char recvBuf[100];

 recvfrom(sockServ,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);
 printf("%s/n",recvBuf);
 closesocket(sockServ);
 WSACleanup();

*/

 char recvBuf[100];
 char sendBuf[100];
 char tempBuf[200];

 SOCKADDR_IN addrClient;
 int len = sizeof(SOCKADDR);
 while(1)
 {
  recvfrom(sockServ,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);
  
  if('q' == recvBuf[0])
  {
   sendto(sockServ, "q", strlen("q")+1, 0, (SOCKADDR*)&addrClient, len);
   printf("chat end!/n");
   break;
  }
  sprintf(tempBuf, "%s say: %s",inet_ntoa(addrClient.sin_addr),recvBuf);
  printf("%s/n",tempBuf);
  printf("place input data:/n");
  gets(sendBuf);
  sendto(sockServ, sendBuf, strlen(sendBuf)+1, 0, (SOCKADDR*)&addrClient, len);

 }
 closesocket(sockServ);
 WSACleanup();

 

}

 

/*****UdpClient*****/

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

void main()
{
 WORD wVersionRequested;
 WSADATA wsaData;
 int err;

 wVersionRequested = MAKEWORD(1, 1);
 err = WSAStartup(wVersionRequested, &wsaData);
 if(err != 0)
 {
  return;
 }

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

 SOCKET sockClient = socket(AF_INET, SOCK_DGRAM, 0);

 SOCKADDR_IN addrServ;
 addrServ.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
 addrServ.sin_family = AF_INET;
 addrServ.sin_port = htons(6000);

/* sendto(sockClient, "hellow", strlen("hellow")+1, 0, (SOCKADDR*)&addrServ, sizeof(SOCKADDR));
 closesocket(sockClient);
 WSACleanup();
*/

 char recvBuf[100];
 char sendBuf[100];
 char tempBuf[100];

 int len = sizeof(SOCKADDR);

 while(1)
 {
  printf("place input data:/n");
  gets(sendBuf);
  sendto(sockClient, sendBuf, strlen(sendBuf)+1, 0, (SOCKADDR*)&addrServ, len);
  recvfrom(sockClient, recvBuf, 100, 0, (SOCKADDR*)&addrServ, &len);
  
  if('q' == recvBuf[0])
  {
   sendto(sockClient,"q", strlen("q")+1, 0, (SOCKADDR*)&addrServ, len);
   printf("chat end!/n");
   break;
  }
  sprintf(tempBuf, "%s say %s", inet_ntoa(addrServ.sin_addr), recvBuf);
  printf("%s/n", tempBuf);
 }
 closesocket(sockClient);
 WSACleanup();

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值