📄 net_udp.cpp
字号:
#include "stdafx.h"
#include "net_udp.h"
net_udp::net_udp()
{
;
}
net_udp::~net_udp()
{
netclose();
}
SOCKET net_udp::create()
{
if(client_socket != NULL)
return SOCKET_ERROR;
client_socket = socket(AF_INET, SOCK_DGRAM, 0);
if(client_socket == INVALID_SOCKET)
return SOCKET_ERROR;
int len = 32768*3;
bind_socket(9101);
/*
The Windows Sockets setsockopt function sets a socket option.设置套接字的选项。
int setsockopt (
SOCKET s,
int level,
int optname,
const char FAR * optval,
int optlen
);It is used to set or retrieve operating parameters associated with the socket, independent of the protocol and communications subsystem. Here are the supported commands to use in the cmd parameter and their semantics:
*/
int err = setsockopt(client_socket, SOL_SOCKET, SO_RCVBUF, (char*)&len, sizeof(int));
if( err == SOCKET_ERROR )
return SOCKET_ERROR;
unsigned long ul = 1;
/*int ioctlsocket (
SOCKET s,
long cmd,
u_long FAR* argp
);
*/
int result = ioctlsocket(client_socket, FIONBIO, (unsigned long*)&ul);
if(result == SOCKET_ERROR)
return SOCKET_ERROR;
return client_socket;
}
//监听绑定端口
bool net_udp::bind_socket(USHORT bindport)
{
if(client_socket == NULL || bindport == 0)
return false;
SOCKADDR_IN m_clinetaddr;
m_clinetaddr.sin_family = AF_INET;
m_clinetaddr.sin_addr.s_addr = INADDR_ANY;
m_clinetaddr.sin_port = htons(bindport);
int result = bind(client_socket,(LPSOCKADDR)&m_clinetaddr,sizeof(m_clinetaddr));
if (result == SOCKET_ERROR)
return false;
return true;
}
int net_udp::senddata(char *pbuf, int length, ULONG ip, USHORT port)
{
int result = 0;
if(client_socket == NULL || pbuf == NULL)
return -1;
SOCKADDR_IN m_clinetaddr;
m_clinetaddr.sin_family = AF_INET;
m_clinetaddr.sin_addr.s_addr = ip;
m_clinetaddr.sin_port = htons(port);
/*int sendto (
SOCKET s,
const char FAR * buf,
int len,
int flags,
const struct sockaddr FAR * to,
int tolen
);
*/
result = sendto(client_socket, pbuf, length, 0, (sockaddr *)&m_clinetaddr, sizeof(m_clinetaddr));
return result;
}
bool net_udp::netclose()
{
if(client_socket != NULL)
closesocket(client_socket);
client_socket = NULL;
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -