我的客户端如何同时向服务器发送两个查询(在两个不同的终端中)?当我尝试它时,只有一个工作,另一个关闭套接字。
main ()
{
readData ();
int serverFd, clientFd, clientFd2,serverLen, clientLen;
struct sockaddr_un serverAddress;/* Server address */
struct sockaddr_un clientAddress; /* Client address */
struct sockaddr* serverSockAddrPtr; /* Ptr to server address */
struct sockaddr* clientSockAddrPtr; /* Ptr to client address */
/* Ignore death-of-child signals to prevent zombies */
signal (SIGCHLD, SIG_IGN);
serverSockAddrPtr = (struct sockaddr*) &serverAddress;
serverLen = sizeof (serverAddress);
clientSockAddrPtr = (struct sockaddr*) &clientAddress;
clientLen = sizeof (clientAddress);
/* Create a socket, bidirectional, default protocol */
serverFd = socket (AF_LOCAL, SOCK_STREAM, DEFAULT_PROTOCOL);
serverAddress.sun_family = AF_LOCAL; /* Set domain type */
strcpy (serverAddress.sun_path, "countries"); /* Set name */
unlink ("countries"); /* Remove file if it already exists */
bind (serverFd, serverSockAddrPtr, serverLen); /* Create file */
listen (serverFd, 5); /* Maximum pending connection length */
while (1) /* Loop forever */
{
/* Accept a client connection */
clientFd = accept (serverFd, clientSockAddrPtr, &clientLen);
while (fork () == 0) /* Create child to send recipe */
{
int recvquery;
char countrynamereceivedquery[200];
while (recvquery=read(clientFd,countrynamereceivedquery,sizeof(countrynamereceivedquery)))
{
//print results
}
}那是我的服务器程序。我将其作为后台进程运行,然后运行客户端程序,该程序可以搜索存储在服务器中的数组中的文本文件。现在,当我同时打开两个终端并运行客户端时,一个客户端退出程序,另一个客户端收到jus-quit- client的查询并搜索服务器。我确实创建了两个套接字,但是客户端在两个终端上都退出了。
发布于 2010-08-10 00:10:02
假设服务器一次允许多个连接,您可以创建一个不同的套接字,并使用它打开到服务器的另一个连接。
发布于 2010-08-10 00:44:32
()创建TCP套接字。
accept()为连接的每个客户端获取一个新的套接字。
b.使用send()和recv(),您可以通过这个新套接字与客户端通信。
c.最后使用close ()函数关闭客户端连接。
https://stackoverflow.com/questions/3441922
复制相似问题