0

此问题使用此处找到的 server.c 和 client.c 的代码。

我希望服务器在客户端连接后向客户端发送消息。

正如您从文章中看到的那样,代码所做的就是让服务器等待客户端连接,监听它,然后打印出客户端给它的消息,并向客户端发出警报。

这是我试图解决我的问题的方法(其他一切都完全相同)。服务器:

 ...
 newsockfd = accept(sockfd, 
             (struct sockaddr *) &cli_addr, 
             &clilen);
 if (newsockfd < 0) 
      error("ERROR on accept");
 else
 {
      write(newsockfd,"I got your message",18);
 }
 ....

在客户端,(同样,其他一切都一样):

...
if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0) 
    error("ERROR connecting");
bzero(buffer,256);
read(sockfd,buffer,255);
...

看来我应该能够用这几行来做到这一点。但是代码的行为与原来的完全一样!这是怎么回事?

4

1 回答 1

0

对于服务器,插入

 bzero(buffer,256);
 n = write(newsockfd,"Client connected", 16);
 if (n < 0) error("ERROR writing to socket");

之后accept()

对于客户,插入

bzero(buffer,256);
n = read(sockfd,buffer,255);
if (n < 0) 
     error("ERROR writing to socket");
printf("%s\n", buffer);

之后connect()

这是你想要的吗?我认为您应该能够从现有代码的其余部分进行推断。

于 2012-04-13T20:41:00.210 回答