0

サーバープログラム:

import java.io.*;
import java.net.*;
public class server
{
        public static void main(String args[])
        {
                try
                {
                ServerSocket ss=new ServerSocket(2000);
                Socket s=ss.accept();
                BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
                String str;
                while((str=br.readLine())!=null)
                {
                        System.out.println(str);
                }
                }
                catch(Exception e)
                {
                        System.out.println(e);
                }
        }
}

クライアント プログラム :

import java.net.*;
import java.io.*;
public class client
{
        public static void main(String args[])
        {
                try
                {
                Socket s=new Socket("127.0.0.1",2000);
                String str;
                BufferedWriter br=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                br.write("\nHello World\n");
                }
                catch(Exception e)
                {
                        System.out.println(e);
                }
        }
}

私が直面している問題は次のとおりです。

  1. 出力なし。
  2. 例外/エラーは表示されません。

何か間違ったことをしている場合は、私に説明してください。サーバーが読み取り中にクライアントが何も書き込んでいないことが問題である可能性があります。

4

2 に答える 2

2

クライアントプログラムでストリームに書き込んだ後、ストリームを閉じます br.close();

ストリームへの書き込み後は、ストリームを閉じるか、stream( br.flush()) をフラッシュする必要があります。これは、ストリームが閉じられると、そのストリームのみを読み取ることができるためです。I/O 操作は、同じストリームで同時に実行できません。

2 つのソケットが同じストリームで接続されているため、そのストリームで I/O 操作を同時に実行することはできません。

于 2013-11-06T08:26:49.547 に答える