• 大小: 14KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: C/C++
  • 标签: udp  

资源简介

基于c++的udp传输,传送超过10M的文件。完成服务端和客户端之间的传输

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#include
#pragma comment(lib“ws2_32.lib“)
/*

HANDLE hrhlhbusy;

  struct  thrpar
  {
SOCKET s;
  };

  struct recpar
  {
  SOCKET srec;
  struct sockaddr_in addr;
  };


 UINT recthread(LPVOID pp)
  {
  SOCKET srecs2;
  struct recpar *prec=(struct recpar *)pp;
      sockaddr_in recaddr;

  srec=prec->srec;
  recaddr=prec->addr;
  char buf[256];
  DWORD ret;

      printf(“recv thread start!“);
  ret=recv(srecbuf2560);
  if(ret==0)
  {
  printf(“connect close!“);
  closesocket(srec);
  return 0;
  }
  else if(ret==SOCKET_ERROR)
  {
  printf(“connect error!“);
  closesocket(srec);
  return 0;
  }
   printf(“recv data:%s“buf);
     return 0;
  }

  
   DWORD WINAPI listhread(LPVOID pp)
  {
   ::MessageBox(NULL“enter the listhread““KK“MB_OK);
  struct thrpar *pthr=(struct thrpar*)pp;
  SOCKET slsaccept;
  sockaddr_in here there;
  char name[256];
  struct hostent *phost;
  int ret;
       
  gethostname(name256);
  phost=gethostbyname(name);

  here.sin_family=AF_INET;
  here.sin_port=htons(1024);
  here.sin_addr.S_un.S_un_b.s_b1=phost->h_addr_list[0][0];
  here.sin_addr.S_un.S_un_b.s_b2=phost->h_addr_list[0][1];
  here.sin_addr.S_un.S_un_b.s_b3=phost->h_addr_list[0][2];
  here.sin_addr.S_un.S_un_b.s_b4=phost->h_addr_list[0][3];
      
      sl=pthr->s;
  
  ret=bind(sl(struct sockaddr *)&heresizeof(here));
  if(ret!=0)
  {
  printf(“bind error“);
  return 0;
  }
  ret=listen(sl5);
  if(ret!=0)
  {
   printf(“listen error“);
  return 0;
  }
  while(true)
  {
  int nlen=sizeof(there);
  saccept=accept(sl(struct sockaddr *)&there&nlen);
  if(saccept==INVALID_SOCKET)
  {
  printf(“accept socket invalid“);
  }
  DWORD wret=WaitForSingleobject(hbusy500);
  if(wret==WAIT_TIMEOUT)
  {
 send(saccept“\0“10);
closesocket(saccept);
continue ;
 }
 DWORD recid;
  struct recpar *prec;
  prec->addr=there;
  prec->srec=saccept;
   
  hr=CreateThread(NULL0(LPTHREAD_START_ROUTINE)&listhreadprec0&recid);
 return 1;
  }
   return 1;
  }

void main(void)
{
SOCKET s;
sockaddr_in addrin;
WSADATA wsdata;
BOOL bsocket;
char *smsg=“this is a test“;

  WSAStartup(0x0202&wsdata);
  
s=WSASocket(AF_INETSOCK_STREAM0NULL0WSA_FLAG_OVERLAPPED);
hbusy=CreateSemaphore(NULL02NULL);
struct  thrpar *psc;
psc=new struct thrpar;
DWORD lisid;
psc->s=s;

  hr=CreateThread(NULL0listhreadpsc0&lisid);
  DWORD ret=WaitForSingleobject(hr10000);
  if(ret==WAIT_object_0)printf(“thread time out%d\r\n“lisid);
  
}*/
void main(void)
{
SOCKET s;
sockaddr_in froma;
WSADATA wsdata;
BOOL optval;
//启动SOCKET库,版本为2.0
WSAStartup(0x0202&wsdata);
optval=TRUE;
//然后赋值给两个地址,一个

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     目录          0  2003-09-30 15:04  recv

     文件      41984  2003-10-05 21:12  recv\recv.ncb

     文件       1147  2003-10-05 21:10  recv\recv.plg

     文件       3377  2003-10-05 20:05  recv\recv.dsp

     文件        533  2003-10-05 20:12  recv\recv.dsw

     文件       3738  2003-10-05 21:08  recv\recv.cpp

     文件      48640  2003-10-05 21:12  recv\recv.opt

     目录          0  2003-09-30 15:04  send

     文件       3377  2003-10-05 19:57  send\send.dsp

     文件      41984  2003-10-05 21:12  send\send.ncb

     文件       1308  2003-10-05 21:10  send\send.plg

     文件        533  2003-10-05 20:12  send\send.dsw

     文件        932  2003-10-05 21:10  send\send.cpp

     文件      48640  2003-10-05 21:12  send\send.opt

----------- ---------  ---------- -----  ----

               196193                    14


评论

共有 条评论