WinCE5.0 Socket UDP Unicast例子

来源:互联网 发布:虎牙网络女主播排行榜 编辑:程序博客网 时间:2024/06/08 03:27

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;

原创粉丝点击