我正在用WinSock2.h
编程UDP服务器客户端程序,其中各个线程所需的参数(SOCKET
、sockaddr_in
(通过结构传递给线程。
每当我的receive函数到达recvfrom()
部分时,它都会不断抛出异常,但只有在调试程序时才会抛出。如果我在没有调试器的情况下启动它,它不会显示任何错误,也不会停止程序的运行。此异常仅发生在服务器一侧。此外,recvfrom()
错误检查不断在客户端抛出错误10022,但据我所知,这是由于客户端没有bind()
造成的。
服务器端是否存在bind()
在另一个函数中的问题,或者我的指针是否有问题?我没有任何其他想法,为什么它只在服务器端抛出异常。
typedef struct thread_args {
struct sockaddr_in sockaddr;
SOCKET socket;
int keep_alive_count;
}THREAD_ARG;
void* receive_packets(void* arguments) {
THREAD_ARG* args = (THREAD_ARG*)arguments;
struct sockaddr_in* from;
char buffer[MAX_FRAGMENTATION + sizeof(HEADER)];
HEADER* message;
while (1) {
memset(buffer, "