服务端在pc机上
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*; import java.net.*; import javax.swing.*; public class Server extends JFrame implements ActionListener{ JPanel jp; JButton jb; JTextField jtf; JTextArea jta; JScrollPane jsp; ServerSocket server; Socket client; BufferedReader in; PrintWriter out; public static void main(String[] args) { // TODO Auto-generated method stub new Server(); } public Server(){ jp=new JPanel(); jb=new JButton("发送"); jb.addActionListener(this); jtf=new JTextField(20); jp.add(jtf); jp.add(jb); jta=new JTextArea(); jsp=new JScrollPane(jta); this.add(jsp); this.add(jp,"South"); this.setTitle("服务端"); this.setSize(400, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); try { server = new ServerSocket(4700); client = server.accept(); out = new PrintWriter(client.getOutputStream()); in = new BufferedReader(new InputStreamReader( client.getInputStream())); while (true) { String line = in.readLine(); if (line != null) { jta.append(line+"\r\n"); } } } catch (Exception e) { e.printStackTrace(); } } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String info=jtf.getText().toString(); out.println(info); out.flush(); } }
android客户端
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class Client extends Activity implements OnClickListener,Runnable { EditText show; EditText msg; Button send; Socket client; BufferedReader in; PrintWriter out; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { Socket s = new Socket("192.168.0.12",4700); System.out.println("客户连接服务器成功"); out = new PrintWriter(s.getOutputStream()); in = new BufferedReader(new InputStreamReader(s.getInputStream())); } catch (Exception e) { e.printStackTrace(); } new Thread(this).start(); setContentView(R.layout.main); show = (EditText) findViewById(R.id.show); msg = (EditText) findViewById(R.id.msg); send = (Button) findViewById(R.id.send); send.setOnClickListener(this); } @Override public void onClick(View arg0) { String text=msg.getText().toString(); msg.setText(""); out.println(text); out.flush(); } Handler h=new Handler(){ public void handleMessage(Message msg) { String message = (String) msg.obj; //System.out.println("Handler:"+message); show.append("\n"+message); } }; @Override public void run() { // TODO Auto-generated method stub try { while (true) { String str = in.readLine(); if (str != null) { Message m=new Message(); m.obj=str; h.sendMessage(m); } } } catch (IOException e) { e.printStackTrace(); } } }
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="显示文字" /> <EditText android:id="@+id/show" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="输入文字" /> <EditText android:id="@+id/msg" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送" /> </LinearLayout>
添加访问网络权限
<uses-permission android:name="android.permission.INTERNET"/>