小编Min*_*Kim的帖子

CreateThread()奇怪地传递struct参数

我传递structCreateThread()函数.另一台机器上的相同代码工作正常.但在我的机器上," SendItem"总是成为0xccccccc Bad Ptr>.有谁知道为什么?

....
myStruct mystruct; 
CreateThread(NULL, 0,  (LPTHREAD_START_ROUTINE)SendItem,(LPVOID)&mystruct, 0, &thread);
...

DWORD WINAPI SendItem(LPVOID lpParam)
{
    myStruct* SendItem= (myStruct*) lpParam;
    ...
}

struct myStruct
{
    char Name [256];
    int ID;
};
Run Code Online (Sandbox Code Playgroud)

c windows

1
推荐指数
1
解决办法
537
查看次数

套接字accept()后无法获取返回值

我有一个客户端/服务器程序.客户运行良好.但是当客户端收到10060错误时,服务器似乎停留在accept()并且无法获得返回值.我怎样才能解决这个问题?我需要accept()来返回错误,以便服务器可以继续做其他事情.

客户代码:

SOCKET sock, sendrecv;  
sendrecv = myInitClientSocket(szIP, 6666);
if ( sendrecv ==0 ){  //socket 10060 error so that myInitClientSocket returns 0
    int err= WSAGetLastError();
    shutdown(sendrecv, 0x02);
    closesocket(sendrecv);
    return 0;
}       
Run Code Online (Sandbox Code Playgroud)

服务器代码:

SOCKET sock, sendrecv;
struct sockaddr_in sock_addr,sendrecv_addr;
WSADATA data;
WORD p;
p=MAKEWORD(2,2);
int resStartup = WSAStartup(p,&data);
sock = WSASocket (AF_INET, SOCK_STREAM, 0, 0, 0, 0);
int nREUSEADDR = 1;
setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(const char*)&nREUSEADDR,sizeof(int)); 

sock_addr.sin_family=PF_INET;
sock_addr.sin_port=htons(6666);         
sock_addr.sin_addr.s_addr=INADDR_ANY;
int resBind =   bind(sock,(struct sockaddr*)&sock_addr,sizeof(struct sockaddr_in));
int resListen =listen(sock, 5); 
int lun = sizeof (struct …
Run Code Online (Sandbox Code Playgroud)

c sockets windows

-1
推荐指数
1
解决办法
456
查看次数

标签 统计

c ×2

windows ×2

sockets ×1