-1

これはサーバー上のコードです(C#):

private void Form1_Load(object sender, EventArgs e)
    {
        Thread service = new Thread((ThreadStart)delegate
        {
            IPAddress localAddr = IPAddress.Parse("127.0.0.1");
            TcpListener listener = new TcpListener(localAddr, 13235);
            listener.Start();
            Console.Write("Waiting for a connection... ");
            TcpClient client = listener.AcceptTcpClient();
            Console.WriteLine("Connected!");
            NetworkStream str = client.GetStream();
            byte[] bytes5 = new byte[client.ReceiveBufferSize];


            str.Read(bytes5, 0, (int)client.ReceiveBufferSize);
            string returndata = Encoding.UTF8.GetString(bytes5);

            Console.WriteLine("ewwww hone :" + returndata);
            label1.Text = returndata;
            client.Close();

        });
        service.Start();

    }

}

Java のクライアント側:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    DataOutputStream os = null;
    DataInputStream is = null;
    int port = 13235;

    System.out.println("SocketClient initialized \n");
    try {
        InetAddress address = InetAddress.getByName("127.0.0.1");

        Socket connection = new Socket(address, port);
        os = new DataOutputStream(connection.getOutputStream());
        is = new DataInputStream(connection.getInputStream());
        os.writeBytes(jTextField1.getText()); 

        System.out.println(jTextField1.getText());
    }
    catch (IOException f) {
        System.out.println("IOException: " + f);
    }
    catch (Exception g) {
        System.out.println("Exception: " + g);
    }
}

私のプログラムは、最初にボタンをクリックしたときだけ正常に動作しますが、その後は何も得られません!! それを修正する方法、または何が問題なのですか?私が必要とするのは、そのボタンをクリックしたのと同じくらいです(クライアント側で)サーバー側で取得する必要があります...

4

3 に答える 3

1

接続/ストリームを閉じていないようで、2回目のクリックで再びソケット接続を開いています。クリックするたびにソケット接続を閉じることができます。または、ソケットを開いたままにし、クリックが発生するたびにソケットを再初期化しません。

于 2013-05-11T00:24:01.607 に答える