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

Android 为什么客户端只向套接字服务器发送一次消息?,android,vb.net,sockets,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) D

在互联网上彻底搜索之后,我设法汇编了一个代码,将数据发送到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


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

如果我正确理解了您的代码,在Android端,您每次都需要创建一个新的套接字。尝试在onclick方法中移动您的socket=new socket()行。谢谢,它正在工作。
// 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;
            }
        }
    }
}