Tag: unix socket

错误:“传输端点已连接”

我正在尝试用C开发一个小型聊天服务器。 对于简单的聊天服务器, (传输端点)===(套接字)? 我是否必须为每个客户端使用一个套接字,还是可以为多个客户端重用套接字? 如果是这样,怎么样? 有这样做的标准方法吗? 有什么好的参考资料? 我能看到一些示例实现吗? 我必须使用gcc编译器和c语言进行此分配。

套接字编程中的htons()函数

我是socket编程的新手,我正在尝试理解htons()的操作。 我已经在互联网上阅读了一些这样的教程,例如这个 。 但我无法理解htons()究竟是做什么的。 我尝试了以下代码: #include #include #include #include int main( int argc, char *argv[] ) { int sockfd, newsockfd, portno, clilen; char buffer[256]; struct sockaddr_in serv_addr, cli_addr; int n; /* First call to socket() function */ sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { perror("ERROR opening socket"); exit(1); } /* Initialize socket […]

如何使用SOCK_DGRAM制作双向unix域套接字?

我正在尝试编写一个简单的Unix数据报服务器/客户端,并且遇到了一些问题。 我想要的是一个服务器,它监听数据报套接字并将收到的每封邮件的回复发送给原始发件人。 我决定首先尝试使用socat作为“服务器”并在C中编写客户端。我正在运行这样的socat: socat UNIX-DGRAM:/tmp/test.socket,fork EXEC:echo 根据我的理解,这应该监听/tmp/test.socket并回复使用相同字符串收到的所有内容? 然后我有一个看起来像这样的客户端程序(为清楚起见,删除了错误检查): int s = socket(AF_UNIX, SOCK_DGRAM, 0); struct sockaddr_un sa; sa.sun_family = AF_UNIX; strcpy(sa.sun_path, “/tmp/test.socket”); const char *data = “Testing data”; int err = sendto(s, data, strlen(data), 0, (struct sockaddr *)(&sa), sizeof(struct sockaddr_un)); printf(“Sent!\n”); unsigned char *buffer = malloc(BUFFER_LENGTH); struct sockaddr_storage recv_sa; int recv_sa_len = 0; int recv_len […]