资源简介
基于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
- 上一篇:CBCGPGridCtrl对使用
- 下一篇:C语言大作业 西北工业大学
相关资源
- 微软官方MFC UDP socket 聊天例程
- c++ socket类封装(udp/tcp)
- TCP、UDP端口及ICMP网络扫描工具
- vc++ mfc 基于udp协议在不同ip地址之间
- 飞秋基于c语言实现
- tcp udp 底层c++封装类windows和linux
- VC6.0 网络程序设计 UDP 文件传输 客户
- opencv+udp+c++ 的摄像头实时传输显示源
- IP TCP UDP校验和计算
- 基于udp的P2P聊天工具MFC实现
- QICQ网络即时聊天服务器和客户端VC源
- 用c++写的一个udp聊天程序
- RUDP协议RFC908和RFC1151中文版
- ABB机器人的socket通信UDPRapid代码
- UDP实现的可靠文件传输源代码
- udp 聊天室 基于linux c语言实现
- libudt - UDT 传输库 linux c 接口封装
- C语言伪造TCP、UDP数据包.zip
- VC6.0下的socket编程 实现了UDP数据传输
- IPv6 UDPVC6
- udp NAT(Network Address Translators) P2P
- 基于MFC实现的UDP组播程序
- C++ 利用UDP协议实现广播通信
- c语言UDP传输系统源码.zip
- 网络通信TCP UDP调试
- TCP/UDP网络调试助手含源码
- 《Qt及Qt Quick开发实战精解》代码
- UDP打洞
- QT tcp/udp调试助手(源码)
- 基于TCP和UDP的socket通信程序C语言
评论
共有 条评论