Android端与服务端基于TCP/IP协议的Socket通讯

创建一个Java项目,在项目中new一个class

Android端与服务端基于TCP/IP协议的Socket通讯_第1张图片

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;


public class SocketServer {
// 监听端口号
private static final int SERVER_PORT = 12345;


public static void main(String[] args) {
try {
System.out.println("Server: Connecting...");
ServerSocket serverSocket = new ServerSocket(SERVER_PORT);
Socket clientSocket;
BufferedReader in;
OutputStream out;
while (true) {
// 循环监听客户端请求
clientSocket = serverSocket.accept();
System.out.println("Server: Receiving...");
try {
// 获取输入流
in = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
out = clientSocket.getOutputStream();
out.write(("手机端发来的消息是:" + in.readLine() + "&&服务端返回的消息是:哇哈哈呀哇哈哈")
.getBytes("utf-8"));
out.close();
} catch (Exception e) {
System.out.println("Server: Error");
e.printStackTrace();
} finally {
clientSocket.close();
System.out.println("Server: Close.");
}
}


} catch (Exception e) {
System.out.println("Server: Error");
e.printStackTrace();
}
}
}



在android项目中与server建立socket连接


package com.sockettest;


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;


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;
import android.widget.TextView;


public class SocketAndrodActivity extends Activity {
private Button button;
private TextView textView;
private EditText editText;
private String message = "";


private Socket socket = null;
private PrintWriter out;
private BufferedReader in;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = (TextView) findViewById(R.id.receiveMsg);
editText = (EditText) findViewById(R.id.sendMsg);
button = (Button) this.findViewById(R.id.btn);
button.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
socket();
}
});
}


private Handler handler = new Handler() {


@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
textView.setText("Client:Connecting");
break;
case 1:
textView.setText("Client Sending:"
+ editText.getText().toString());
break;
case 2:
textView.setText("Client Received:" + message);
break;
default:
break;
}
}
};


private void socket() {


new Thread(new Runnable() {


@Override
public void run() {
handler.sendEmptyMessage(0);
try {
socket = new Socket("192.168.1.166", 12345);
handler.sendEmptyMessage(1);
out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),
true);
out.println(editText.getText().toString());
out.flush();


in = new BufferedReader(new InputStreamReader(
socket.getInputStream(),"utf-8"));
// 获取从服务端发来的信息
message = in.readLine();


handler.sendEmptyMessage(2);
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally {
// 关闭Socket
try {
if(socket!=null){
socket.close();
}
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}).start();
}
}

你可能感兴趣的:(Android端与服务端基于TCP/IP协议的Socket通讯)