为什么客户端只将消息发送到套接字服务器一次?

时间:2014-04-09 19:55:33

标签: android vb.net sockets

在互联网上进行了详尽的搜索后,我设法组装了一个代码,将数据发送到在VB.NET中创建的服务器套接字。

' Here is my VB.NET code
Imports System.Net.Sockets
Imports System.Text
Imports System.Net

Public Module MainModule

    Private TcpListener As New TcpListener(IPAddress.Parse("10.0.0.100"), 11000)
    Dim TcpClient As New TcpClient
    Dim NetworkStream As NetworkStream

    Public Sub Main()
        TcpListener.Start()

        While (True)
            TcpClient = TcpListener.AcceptTcpClient()
            NetworkStream = TcpClient.GetStream()

            Dim r_byt(TcpClient.ReceiveBufferSize) As Byte
            Dim r_byt_size As Integer = NetworkStream.Read(r_byt, 0, TcpClient.ReceiveBufferSize) - 1
            Dim data As String = Encoding.ASCII.GetString(r_byt, 0, r_byt_size)
            Console.WriteLine(data)

            Dim s_byt() As Byte = Encoding.ASCII.GetBytes("testing")
            NetworkStream.Write(s_byt, 0, s_byt.Length)
            NetworkStream.Flush()

            NetworkStream.Close()
            TcpClient.Close()
        End While

        TcpListener.Stop()
    End Sub
End Module

// Here is my Android code
package com.javacodegeeks.android.androidsocketclient;

import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Client extends Activity {
    private static final String SERVER_IP = "10.0.0.100";
    private static final int SERVER_PORT = 11000;
    private Socket socket;

    private EditText InputText = null;
    private Button ButtonSend = null;
    private TextView LabelReceived = null;
    private Thread thread = null;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);      

        InputText = (EditText)findViewById(R.id.InputText);
        ButtonSend = (Button)findViewById(R.id.ButtonSend);
        LabelReceived = (TextView)findViewById(R.id.LabelReceived);
        thread = new Thread(new ClientThread());

        if (thread != null) {
            thread.start();
        }

        ButtonSend.setOnClickListener(new OnClickListener() {
            public void onClick(View arg0) {
                try {
                    if (socket != null) {
                        PrintWriter out = new PrintWriter(socket.getOutputStream());

                        out.println(InputText.getText().toString());
                        out.flush();

                        out.close();
                    } else {
                        LabelReceived.setText("socket is null!");
                    }
                } catch (Exception e) {
                    LabelReceived.setText(e.getMessage());
                }
            }
        });
    }

    class ClientThread implements Runnable {
        public void run() {
            try {
                InetAddress IAddress = InetAddress.getByName(SERVER_IP);
                socket = new Socket(IAddress, SERVER_PORT);
            } catch (Exception e) {
                socket = null;
            }
        }
    }
}

这两个正在工作,当我按下"发送按钮"它进入服务器,但当我再次尝试时,没有收到任何信息。

0 个答案:

没有答案