android中利用Socket实现手机客户端与PC端进行通信
服务器端:
package com.colorful.socket;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.Socket;import java.net.UnknownHostException;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 SocketClient extends Activity {TextView tv;EditText et;Button btn; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } public void init(){ et=(EditText)findViewById(R.id.et); btn=(Button)findViewById(R.id.btn); tv=(TextView)findViewById(R.id.tv); btn.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString s=et.getText().toString();try {connectToServer(s);} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }); } public void connectToServer(String s) throws UnknownHostException, IOException{ Socket client=requestSocket("输入电脑的IP地址",9999); sendMsg(client,s); String str=receiveMsg(client); tv.setText(str); System.out.println(str); } public Socket requestSocket(String host,int port) throws UnknownHostException, IOException{ Socket s=new Socket(host,port); return s; } public void sendMsg(Socket socket,String msg) throws IOException{ BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); writer.write((msg.replaceAll("\n", "")+"\n")); writer.flush(); } public String receiveMsg(Socket socket) throws IOException{ BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream())); String msg=reader.readLine(); return msg; } }最后不要在AndroidManifest.xml中添加如下权限:
<uses-permission android:name="android.permission.INTERNET"/>