分类:
2010-07-12 14:49:13
C++ Builder下三种UDP通信实现方法的比较(1)
主要讨论一下数据的接受:
memset(&sockaddr,0,sizeof(sockaddr));
/* 设置端口号 */
sockaddr.sin_port=htons(3000);
sockaddr.sin_family=AF_INET;
sockaddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
sock = socket(AF_INET,SOCK_DGRAM,0);
if(sock
== INVALID_SOCKET)
{
Application->MessageBoxA("Socket Open failed","Error",MB_OK);
WSACleanup();
return;
}
result = bind(sock,(LPSOCKADDR)&sockaddr,sizeof
sockaddr);
if(result == SOCKET_ERROR)
{
Application->MessageBoxA("Bind Error","Error",MB_OK);
WSACleanup();
return;
}
/* 自写函数getFileReady打开一个日志文件等待记录数据 */
if(
!getFileReady() )
{
WSACleanup();
return;
}
/* 启动线程,接受数据 */
recvFlag = true;
tudpr = new
TUDPR(true);
tudpr->Resume();
}
TUDPR是负责受信的线程,其类
定义如下:
class
TUDPR : public TThread
{
private:
protected:
void __fastcall Execute();
public:
__fastcall TUDPR(bool
CreateSuspended);
};
线程内的完整处理如下:
#include
#pragma hdrstop
#include
#include
"TUDPR.h"
#include "Monitor.h"
extern
int m_sendRcvFlag;
extern SOCKET sock;
extern
WSADATA wsaData;
extern SOCKADDR_IN sockaddr;
#pragma package(smart_init)
__fastcall TUDPR::TUDPR(bool CreateSuspended)chulia200020012010-07-12 14:53:39
简单TCP服务器端和客户端(源代码)
http://andylin02.javaeye.com/blog/460742
1. //客户端:
Cpp代码
1. #include
chulia200020012010-07-12 14:52:22
简单UDP服务器端和客户端(源代码)
http://andylin02.javaeye.com/blog/460744
1. //客户端
Cpp代码
1. #include