剑萧舞蝶的专栏

注意点:注册访问的网络权限;android中UI线程不能有访问网络的操作,,否则会报android.os.NetworkOnMainThreadException的异常

<uses-permissionandroid:name="android.permission.INTERNET"/>欢迎加入QQ交流3群:317874559实例一客户端

package com.android.xiong.simplesocket;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.InetSocketAddress;import java.net.Socket;import java.net.SocketTimeoutException;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity {Socket socket = null;String buffer = "";TextView txt1;Button send;EditText ed1;String geted1;public Handler myHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {if (msg.what == 0x11) {Bundle bundle = msg.getData();txt1.append("server:"+bundle.getString("msg")+"\n");}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);txt1 = (TextView) findViewById(R.id.txt1);send = (Button) findViewById(R.id.send);ed1 = (EditText) findViewById(R.id.ed1);send.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {geted1 = ed1.getText().toString();txt1.append("client:"+geted1+"\n");//启动线程 向服务器发送和接收信息new MyThread(geted1).start();}});}class MyThread extends Thread {public String txt1;public MyThread(String str) {txt1 = str;}@Overridepublic void run() {//定义消息Message msg = new Message();msg.what = 0x11;Bundle bundle = new Bundle();bundle.clear();try {//连接服务器 并设置连接超时为5秒socket = new Socket();socket.connect(new InetSocketAddress("1.1.9.30", 30000), 5000);//获取输入输出流OutputStream ou = socket.getOutputStream();BufferedReader bff = new BufferedReader(new InputStreamReader(socket.getInputStream()));//读取发来服务器信息String line = null;buffer="";while ((line = bff.readLine()) != null) {buffer = line + buffer;}//向服务器发送信息ou.write("android 客户端".getBytes("gbk"));ou.flush();bundle.putString("msg", buffer.toString());msg.setData(bundle);//发送消息 修改UI线程中的组件myHandler.sendMessage(msg);//关闭各种输入输出流bff.close();ou.close();socket.close();} catch (SocketTimeoutException aa) {//连接超时 在UI界面显示消息bundle.putString("msg", "服务器连接失败!请检查网络是否打开");msg.setData(bundle);//发送消息 修改UI线程中的组件myHandler.sendMessage(msg);} catch (IOException e) {e.printStackTrace();}}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}<RelativeLayout xmlns:android=""xmlns:tools=""android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><EditTextandroid:id="@+id/ed1"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="给服务器发送信息"/><Buttonandroid:id="@+id/send"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/ed1"android:text="发送"/><TextViewandroid:id="@+id/txt1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/send"/></RelativeLayout>服务端package com.android.net;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;import java.util.ArrayList;import java.util.List;public class AndroidService {public static void main(String[] args) throws IOException {ServerSocket serivce = new ServerSocket(30000);while (true) {//等待客户端连接Socket socket = serivce.accept();new Thread(new AndroidRunable(socket)).start();}}}package com.android.net;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.Socket;public class AndroidRunable implements Runnable {Socket socket = null;public AndroidRunable(Socket socket) {this.socket = socket;}@Overridepublic void run() {// 向android客户端输出hello worildString line = null;InputStream input;OutputStream output;String str = "hello world!";try {//向客户端发送信息output = socket.getOutputStream();input = socket.getInputStream();BufferedReader bff = new BufferedReader(new InputStreamReader(input));output.write(str.getBytes("gbk"));output.flush();//半关闭socketsocket.shutdownOutput();//获取客户端的信息while ((line = bff.readLine()) != null) {System.out.print(line);}//关闭输入输出流output.close();bff.close();input.close();socket.close();} catch (IOException e) {e.printStackTrace();}}}实例二客户端婚姻犹如一艘雕刻的船,看你怎样去欣赏它,又怎样驾驭它。

剑萧舞蝶的专栏

相关文章:

你感兴趣的文章:

标签云: