找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3178|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于winsock的udp通信

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:104287 發(fā)表于 2016-1-31 00:40 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
基于vc6.0發(fā)送單接收自回環(huán)
/****************服務(wù)器************/
#include<winsock2.h>
#include<stdio.h>
#include<stdlib.h>
#pragma comment (lib,"ws2_32.lib")
#define DEFAULT_PORT 5050
#define BUFFER_LENGTH 1024
void main()
{
  int iPort =DEFAULT_PORT;
  WSADATA wsaData;
  SOCKET sSocket;
  //客戶(hù)地址長(zhǎng)度
  int iLen;
  //發(fā)送的數(shù)據(jù)長(zhǎng)度
  int iSend;
  //接收的數(shù)據(jù)長(zhǎng)度
  int iRecv;
  //要發(fā)送給客戶(hù)的信息
  char send_buf[] = "Hello,I am a server";
  //接收數(shù)據(jù)的緩沖區(qū)
  char recv_buf[BUFFER_LENGTH] ;
  //本地地址和客戶(hù)地址
  struct sockaddr_in ser,cli;
  WSAStartup(MAKEWORD(1,1),&wsaData) ;////加載socket庫(kù)
  sSocket = socket(AF_INET,SOCK_DGRAM,0);///創(chuàng)建socket
  ser.sin_family = AF_INET;
  ser.sin_port = htons(iPort);//端口號(hào)
  ser.sin_addr.s_addr = htonl(INADDR_LOOPBACK);//(INADDR_ANY);////從固定的網(wǎng)卡綁定ip地址
  int nbind = bind(sSocket,(SOCKADDR *)&ser,sizeof(SOCKADDR)); ///綁定要偵聽(tīng)的地址
if (SOCKET_ERROR==nbind)
{
closesocket(sSocket);
}
  
  iLen=sizeof (cli);
  memset(recv_buf,0,sizeof(recv_buf));
  while(1)
  {
   iRecv=recvfrom(sSocket,recv_buf,BUFFER_LENGTH,0,(SOCKADDR *)&cli,&iLen);
  if(iRecv == SOCKET_ERROR)
    {
      printf("recvfrom() Failed: %d \n",WSAGetLastError());
      return;
    }
  else if(iRecv == 0)
            break;
  else
         {
           printf("recvfrom(): %s \n",recv_buf);
           printf("Accepted client ip:[%s],port:[%d] \n",inet_ntoa(cli.sin_addr),ntohs(cli.sin_port));////將一個(gè)IP轉(zhuǎn)換成一個(gè)互聯(lián)網(wǎng)標(biāo)準(zhǔn)點(diǎn)分格式的字符串將一個(gè)無(wú)符號(hào)短整形數(shù)從網(wǎng)絡(luò)字節(jié)順序轉(zhuǎn)換為主機(jī)字節(jié)順序
         }
  
  }
  closesocket(sSocket);
  WSACleanup();
}
/**********客戶(hù)端************/
#include<winsock2.h>
#include<stdio.h>
#include<stdlib.h>
#pragma comment (lib,"ws2_32.lib")
#define DEFAULT_PORT 5050
#define BUFFER_LENGTH 1024
void main()
{
  int iPort =DEFAULT_PORT;
  WSADATA wsaData;
  SOCKET sSocket;
  //客戶(hù)地址長(zhǎng)度
  int iLen,nbind;
  //發(fā)送的數(shù)據(jù)長(zhǎng)度
  int iSend;
  //接收的數(shù)據(jù)長(zhǎng)度
  int iRecv;
  //要發(fā)送給客戶(hù)的信息
  char send_buf[] = "Hello,I am a server";
  //接收數(shù)據(jù)的緩沖區(qū)
  char recv_buf[BUFFER_LENGTH] ;
  //本地地址和客戶(hù)地址
  struct sockaddr_in ser;
  WSAStartup(MAKEWORD(1,1),&wsaData);
  sSocket = socket(AF_INET,SOCK_DGRAM,0);
  ser.sin_family = AF_INET;
  ser.sin_port = htons(iPort);//端口號(hào)
  ser.sin_addr.s_addr = htonl(INADDR_LOOPBACK);//(INADDR_ANY);////從固定的網(wǎng)卡綁定ip地址
while(1)
  {   
iSend = sendto(sSocket,send_buf,sizeof(send_buf),0,(SOCKADDR *)&ser,sizeof(ser));
   if(iSend = 0)
           break;
      else
{
printf("sendto() succeeded! \n");
printf("------------------------------\n");
}
}
  closesocket(sSocket);
  WSACleanup();
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表