这里有一个示例代码可以帮助您入门。
在服务器端
我相信您知道如何使用 xml 布局创建 android UI。
在 xml 布局中,添加一个带有 id 的按钮,一个 listView。
onclicked 按钮将启动服务器,并保持打开状态以接收来自客户端的消息。
在MainActivity上,创建了Button和ListView这两者的实例后,找到了带有findViewById的Id。
将 listView 设置为您创建的适配器。
ArrayAdapter<String> myAdapter = new ArrayAdapter<>(MainActivity.this, R.layout.list_items, list);
listView.setAdapter(myAdapter);
点击按钮后调用下面的方法。
public void startListening(){
myThread = new Thread(new Runnable() {
@Override
public void run() {
try{
ServerSocket server = new ServerSocket(6000);
while(st) {
Socket socket = server.accept();
Message clientMessage = Message.obtain();
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
String strMessage = (String) ois.readObject();
clientMessage.obj = strMessage;
myHandler.sendMessage(clientMessage);
ois.close();
}
server.close();
} catch (IOException e) {
Message msg = Message.obtain();
msg.obj = e.getMessage();
myHandler.sendMessage(msg);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
});
myThread.start();
}
使用 while 循环启动服务器并使其保持打开状态,以便从客户端接收数据。
现在添加这个方法来更新 UI 线程。
Handler myHandler = new Handler(){
@Override
public void handleMessage(Message status){
String myMessage = status.obj.toString();
list.add(myMessage);
}
};
在客户端
在 xml 中添加一个 EditText 和一个发送按钮以将数据发送到服务器。
在mainActivity中,创建editText和Button的实例后,用findViewById找到它们的id。
editText =(EditText)findViewById(R.id.editText);
send = (Button)findViewById(R.id.send);
单击发送按钮执行此操作。
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myString = editText.getText().toString();
sendData();
}
});
下面是 sendData() 方法。
public void sendData(){
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Socket socket = new Socket("127.0.0.1", 6000);
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(myString);
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
}
在同一个安卓设备或模拟器上运行这两个项目。
我认为这应该让你开始。