C:如何创建套接字?
C: how to create a socket?
我正在尝试为客户端和服务器创建一个套接字进行通信。
我不是很熟悉 socket() 和 bind() 的工作原理。如何创建数据报套接字?
当我尝试编译它时,它说套接字的地址永远不会为 NULL,并且不会使用 sockfd。
int create_dg_socket(in_port_t port) {
int socket(int domain, int type, int protocol);
int bind(int sockfd,
const struct sockaddr *addr,
socklen_t len);
// Create the socket
int sockfd;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if(socket==NULL) {
fprintf(stderr, "create_dg_socket not implemented!\n");
exit(-1);
}
}
How do I create a datagram socket?
像这样:
int create_dg_socket(in_port_t port) {
// Create the socket
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd == -1) {
fprintf(stderr, "create_dg_socket cannot create socket! Error: %d\n", errno);
return -1;
}
// Bind the socket port
struct sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = INADDR_ANY;
if (bind(sockfd, (struct sockaddr *)&addr, sizeof(addr)) != 0) {
fprintf(stderr, "create_dg_socket cannot bind socket! Error: %d\n", errno);
close(sockfd);
return -1;
}
return sockfd;
}
int sockfd = create_dg_socket(port);
if (sockfd == -1) {
//...
exit(-1);
}
我正在尝试为客户端和服务器创建一个套接字进行通信。
我不是很熟悉 socket() 和 bind() 的工作原理。如何创建数据报套接字?
当我尝试编译它时,它说套接字的地址永远不会为 NULL,并且不会使用 sockfd。
int create_dg_socket(in_port_t port) {
int socket(int domain, int type, int protocol);
int bind(int sockfd,
const struct sockaddr *addr,
socklen_t len);
// Create the socket
int sockfd;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if(socket==NULL) {
fprintf(stderr, "create_dg_socket not implemented!\n");
exit(-1);
}
}
How do I create a datagram socket?
像这样:
int create_dg_socket(in_port_t port) {
// Create the socket
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd == -1) {
fprintf(stderr, "create_dg_socket cannot create socket! Error: %d\n", errno);
return -1;
}
// Bind the socket port
struct sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = INADDR_ANY;
if (bind(sockfd, (struct sockaddr *)&addr, sizeof(addr)) != 0) {
fprintf(stderr, "create_dg_socket cannot bind socket! Error: %d\n", errno);
close(sockfd);
return -1;
}
return sockfd;
}
int sockfd = create_dg_socket(port);
if (sockfd == -1) {
//...
exit(-1);
}