WinCE5.0 Socket UDP Unicast例子

Platform Builder 5.0

注意需要将 ws2.lib链接进项目(右键点击项目名称,然后setting),否则WSAGetLastError()总是无法编译通过。

#include "stdafx.h"
#include <winsock2.h>
#include <ws2tcpip.h>

#define CUSTOM_PORT 3333

int _tmain(int argc, TCHAR *argv[], TCHAR *envp[])
{
 WSADATA wsaData;
 SOCKET s;
 int m_errorCode;
 SOCKADDR_IN m_localAddress;
 SOCKADDR_IN m_remoteAddress;
 s = INVALID_SOCKET;
 if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
 {
  RETAILMSG(1, (_T("/r/n----- WSAStartup Failed -----")));
  return 0;
 }

 //create a UDP socket
 s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
 if(s == INVALID_SOCKET)
 {
  WSACleanup();
  RETAILMSG(1, (_T("/r/n----- SOCKET() Failed:%d -----"), WSAGetLastError()));
  return 0;
 }
      
 //binding
 int localPort = CUSTOM_PORT;
 memset(&m_localAddress, 0, sizeof(SOCKADDR_IN));
 m_localAddress.sin_family = AF_INET;
 m_localAddress.sin_port = htons(localPort);
 m_localAddress.sin_addr.s_addr = htonl(INADDR_ANY);

 if(bind(s, (SOCKADDR*) &m_localAddress, sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
 {
  WSACleanup();
  return 0;
 }
 
 int bytesRead, bufSize;
 char inBuf[100];
 bufSize = 100;
 char outBuf[] = "hello world";

 int SenderAddrSize = sizeof(m_remoteAddress);
 
 do
 {
  bytesRead = recvfrom(s, inBuf, bufSize, 0, (SOCKADDR *)&(m_remoteAddress), &SenderAddrSize);
 
  if(bytesRead == SOCKET_ERROR || bytesRead <= 0)
   continue;

  if (bytesRead > 0)
  { 
   int sentBytes = 0;
   int len = 18;
   
   sentBytes = sendto(s, outBuf, len, 0, (SOCKADDR*) &m_remoteAddress, sizeof(m_remoteAddress));
  }
 } while(running);
 WSACleanup();
 return 1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值