c语言socket bind函数原型 socket编程中。bind()函数返回errno=99,何故

2025-05-01 00:03:43

c语言socket bind函数原型

socket bind函数的声明:

int bind(int sockfd, struct sockaddr * my_addr, int addrlen);

socket编程中。bind()函数返回errno=99,何故

你所谓的bind阻塞,是指程序运行到bind函数这里卡住了确定是bind阻塞,而不是后面的某语句阻塞 另外,你socket开启了REUSE_ADDR选项了没有

请问javasocket里面的bind做什么用

socket.bind(SocketAddress bindpoint) 英文:Binds the socket to a local address;If the address is null, then the system will pick upan ephemeral port and a valid local address to bind the socket翻译:将socket绑定到本地地址;如果地址为空,系统会指定一个暂时的端口和合法的本地地址去绑定socket

windowssocket编程:bind错误码10038如何解决

参考下面:


SOCKET server_socket;

SOCKADDR_IN internet_addr;

int ret, error, addr_len;

PROXY_SOCK_PARAM_T *_param;


HANDLE hThread;

unsigned int thid;


// 创建 socket

server_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if(server_socket == INVALID_SOCKET) /* 调用 socket 不成功, 返回 INVALID_SOCKET,

调用 WSAGetLastError() 可查看错误代码 */

{

error = WSAGetLastError();

// TODO: 错误处理

return 0;

}


// 进行 Socket 绑定

internet_addr.sin_family = PF_INET;

internet_addr.sin_port = htons(PROXY_SERVER_PORT);

internet_addr.sin_addr.s_addr = htonl(INADDR_ANY);

ret = bind(server_socket, (SOCKADDR *)&internet_addr, sizeof(internet_addr));

if(ret != 0) /* bind 成功返回 0. 否则返回 SOCKET_ERROR, 调用 WSAGetLastError() 可查看错误代码 */

{

error = WSAGetLastError();

closesocket(server_socket);

// TODO: 错误处理

return 0;

}


// 在 socket 上进行监听

ret = listen(server_socket, 128); /* listen 成功返回 0. 否则返回 SOCKET_ERROR,

调用 WSAGetLastError() 可查看错误代码 */

if(ret != 0)

{

error = WSAGetLastError();

closesocket(server_socket);

// TODO: 错误处理

return 0;

}

std::cout << "[PROXY-SERVR] 端口 5200 监听启动..." << std::endl;

// 接收来自客户端的请求

for(;;)

{

// 组织传递给新线程的数据结构

_param = (PROXY_SOCK_PARAM_T *)malloc(sizeof(PROXY_SOCK_PARAM_T));

_param->server_socket = server_socket;

addr_len = sizeof(_param->client_addr);

_param->client_socket = accept( _param->server_socket,

(SOCKADDR *)&(_param->client_addr),

&(addr_len));


if(_param->client_socket == INVALID_SOCKET)

{

error = WSAGetLastError();

// TODO: 错误处理

} else {

// 创建工作线程

hThread = (HANDLE)_beginthreadex(NULL, 0, server_work_thread, (void *)_param, 0, &thid);

if(hThread == INVALID_HANDLE_VALUE)

{

free(_param);

} else {

CloseHandle(hThread);

}

}

}

友情链接: base64 分词 迷你小数字