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 に答える