資源簡介
非常有用的c++代碼,可用于Linux和移植到Windows系統,包含用戶連接掛載點,caster認證用戶,用戶發送GGA給caster等

代碼片段和文件信息
#include??
#include??
#include?
#include?
#include??
#include??
#include??
#include??
#include?
#include?
#include?
#include?
#include?
#include?
ntrip_caster::ntrip_caster()
{
m_listen_sock?=?0;
m_epoll_fd?=?0;
m_max_count?=?0;
m_epoll_events?=?NULL;
}
?
ntrip_caster::~ntrip_caster()
{
if(m_listen_sock?>?0){
close(m_listen_sock);
}
if(m_epoll_fd?>?0){
close(m_epoll_fd);
}
}
?
bool?ntrip_caster::init(int?port??int?sock_count)
{
m_max_count?=?sock_count;
struct?sockaddr_in?caster_addr;
memset(&caster_addr?0?sizeof(struct?sockaddr_in));
caster_addr.sin_family?=?AF_INET;
caster_addr.sin_port?=?htons(port);
caster_addr.sin_addr.s_addr?=?htonl(INADDR_ANY);
m_listen_sock?=?socket(AF_INET?SOCK_STREAM?0);
if(m_listen_sock?==?-1)?{
exit(1);
}
if(bind(m_listen_sock?(struct?sockaddr*)&caster_addr?sizeof(struct?sockaddr))?==?-1){
exit(1);
}
if(listen(m_listen_sock?5)?==?-1){
exit(1);
}
?
m_epoll_events?=?new?struct?epoll_event[sock_count];
if?(m_epoll_events?==?NULL){
exit(1);
}
m_epoll_fd?=?epoll_create(sock_count);
epoll_ops(m_listen_sock?EPOLL_CTL_ADD?EPOLLIN);
return?true;
}
?
bool?ntrip_caster::init(const?char?*ip?int?port??int?sock_count)
{
m_max_count?=?sock_count;
struct?sockaddr_in?server_addr;
memset(&server_addr?0?sizeof(struct?sockaddr));
server_addr.sin_family?=?AF_INET;
server_addr.sin_port?=?htons(port);
server_addr.sin_addr.s_addr?=?inet_addr(ip);
m_listen_sock?=?socket(AF_INET?SOCK_STREAM?0);
if(m_listen_sock?==?-1){
exit(1);
}
if(bind(m_listen_sock?(struct?sockaddr*)&server_addr?sizeof(struct?sockaddr))?==?-1){
exit(1);
}
if(listen(m_listen_sock?5)?==?-1){
exit(1);
}
m_epoll_events?=?new?struct?epoll_event[sock_count];
if?(m_epoll_events?==?NULL){
exit(1);
}
m_epoll_fd?=?epoll_create(sock_count);
epoll_ops(m_listen_sock?EPOLL_CTL_ADD?EPOLLIN);
return?true;
}
?
int?ntrip_caster::accept_new_client()
{
struct?sockaddr_in?client_addr;
memset(&client_addr?0?sizeof(struct?sockaddr_in));
socklen_t?clilen?=?sizeof(struct?sockaddr);?
int?new_sock?=?accept(m_listen_sock?(struct?sockaddr*)&client_addr?&clilen);
epoll_ops(new_sock?EPOLL_CTL_ADD?EPOLLIN);
return?new_sock;
}
?
int?ntrip_caster::recv_data(int?sock?char?*recv_buf)
{
char?buf[1024]?=?{0};
int?len?=?0;
int?ret?=?0;
while(ret?>=?0)
{
ret?=?recv(sock?buf?sizeof(buf)?0);
if(ret?<=?0)
{
epoll_ops(sock?EPOLL_CTL_DEL?EPOLLERR);
close(sock);
break;
}else?if(ret?1024){
memcpy(recv_buf?buf?ret);
len?+=?ret;
break;
}else{
memcpy(recv_buf?buf?sizeof(buf));
len?+=?ret;
}
}
return?ret?<=?0???ret?:?len;
}
?
int?ntrip_caster::send_data(int?sock?const?char?*send_buf?int?buf_len)
{
int?len?=?0;
int?ret?=?0;
while(len? if(buf_len?1
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????.......?????12533??2019-01-14?11:42??NtripCaster-master\caster\ntrip_caster.cpp
?????文件???????2627??2019-01-18?15:26??NtripCaster-master\client\ntrip_client.cpp
????.......??????3015??2019-01-14?11:42??NtripCaster-master\include\ntrip_caster.h
????.......???????841??2019-01-14?11:42??NtripCaster-master\include\ntrip_mountpoint.h
????.......???????651??2019-01-14?11:42??NtripCaster-master\include\ntrip_util.h
????.......?????18092??2019-01-14?11:42??NtripCaster-master\LICENSE
????.......???????930??2019-01-14?11:42??NtripCaster-master\Makefile
????.......???????295??2019-01-14?11:42??NtripCaster-master\old\Makefile
????.......?????13115??2019-01-14?11:42??NtripCaster-master\old\ntripcaster.cpp
????.......??????1349??2019-01-14?11:42??NtripCaster-master\old\ntripcaster.h
????.......??????1709??2019-01-14?11:42??NtripCaster-master\old\ntripclient.cpp
????.......??????1571??2019-01-14?11:42??NtripCaster-master\old\ntripserver.cpp
?????文件??????29784??2019-01-14?11:42??NtripCaster-master\old\run\ntripcaster
?????文件??????19240??2019-01-14?11:42??NtripCaster-master\old\run\ntripclient
?????文件??????19496??2019-01-14?11:42??NtripCaster-master\old\run\ntripserver
????.......???????425??2019-01-14?11:42??NtripCaster-master\old\sourcetable.dat
????.......??????2328??2019-01-14?11:42??NtripCaster-master\old\util.cpp
????.......???????742??2019-01-14?11:42??NtripCaster-master\old\util.h
????.......???????476??2019-01-14?11:42??NtripCaster-master\README
????.......???????109??2019-01-14?11:42??NtripCaster-master\README.md
?????文件??????39632??2019-01-14?11:42??NtripCaster-master\run\NTRIPCaster
?????文件??????14624??2019-01-14?11:42??NtripCaster-master\run\NTRIPClient
?????文件??????14600??2019-01-14?11:42??NtripCaster-master\run\NTRIPServer
?????文件??????21244??2019-01-18?16:58??NtripCaster-master\server\ntrip_server.cpp
????.......??????2555??2019-01-14?11:42??NtripCaster-master\util\ntrip_util.cpp
?????目錄??????????0??2019-01-14?11:42??NtripCaster-master\old\run
?????目錄??????????0??2019-01-14?11:42??NtripCaster-master\caster
?????目錄??????????0??2019-01-14?11:42??NtripCaster-master\client
?????目錄??????????0??2019-01-14?11:42??NtripCaster-master\include
?????目錄??????????0??2019-01-14?11:42??NtripCaster-master\old
............此處省略7個文件信息
評論
共有 條評論