android开发实例-socket(一)
這兩天被這個問題搞得很頭疼,本來以為很簡單的一個事,結果花了不少時間。
首先是服務器端,很簡單的一個等待連接:
1 package com.mingrisoft; 2 3 import java.awt.BorderLayout; 4 import java.net.*; 5 import javax.swing.JFrame; 6 import javax.swing.JScrollPane; 7 import javax.swing.JTextArea; 8 9 public class ServerSocketFrame extends JFrame { 10 private JTextArea ta_info; 11 private ServerSocket server; // 聲明ServerSocket對象 12 private Socket socket; // 聲明Socket對象socket 13 14 public void getServer() { 15 try { 16 server = new ServerSocket(1992); // 實例化Socket對象 17 ta_info.append("服務器套接字已經創建成功\n"); // 輸出信息 18 while (true) { // 如果套接字是連接狀態 19 ta_info.append("等待客戶機的連接......\n"); // 輸出信息 20 socket = server.accept(); // 實例化Socket對象 21 ta_info.append("連接成功......\n"); 22 } 23 } catch (Exception e) { 24 e.printStackTrace(); // 輸出異常信息 25 } 26 } 27 28 public static void main(String[] args) { // 主方法 29 ServerSocketFrame frame = new ServerSocketFrame(); // 創建本類對象 30 frame.setVisible(true); 31 frame.getServer(); // 調用方法 32 } 33 34 public ServerSocketFrame() { 35 super(); 36 setTitle("建立服務器套接字"); 37 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 38 setBounds(100, 100, 260, 167); 39 40 final JScrollPane scrollPane = new JScrollPane(); 41 getContentPane().add(scrollPane, BorderLayout.CENTER); 42 43 ta_info = new JTextArea(); 44 scrollPane.setViewportView(ta_info); 45 }46 }android客戶端:
1 package com.wxp.And255; 2 3 import java.io.IOException; 4 import java.net.InetSocketAddress; 5 import java.net.ServerSocket; 6 import java.net.Socket; 7 import java.net.UnknownHostException; 8 9 import android.os.Bundle; 10 import android.os.Handler; 11 import android.os.StrictMode; 12 import android.annotation.SuppressLint; 13 import android.annotation.TargetApi; 14 import android.app.Activity; 15 import android.view.Menu; 16 import android.view.MenuItem; 17 import android.view.View; 18 import android.view.View.OnClickListener; 19 import android.widget.Button; 20 import android.widget.Toast; 21 import android.support.v4.app.NavUtils; 22 23 @TargetApi(9) 24 @SuppressLint({ "NewApi", "NewApi", "NewApi", "NewApi", "NewApi", "NewApi" }) 25 public class MainActivity extends Activity { 26 27 28 private Button con; 29 Socket socket; 30 InetSocketAddress isa=null; 31 @TargetApi(9) 32 @SuppressLint({ "NewApi", "NewApi", "NewApi", "NewApi" }) 33 public void onCreate(Bundle savedInstanceState) { 34 super.onCreate(savedInstanceState); 35 setContentView(R.layout.activity_main); 36 37 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() 38 .detectDiskReads().detectDiskWrites().detectNetwork() 39 .penaltyLog().build()); 40 StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() 41 .detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath() 42 .build()); 43 44 con=(Button) findViewById(R.id.button1); 45 con.setOnClickListener(new OnClickListener() { 46 47 public void onClick(View v) { 48 49 Handler handler=new Handler(); 50 handler.post(socketThread); 51 52 } 53 }); 54 55 } 56 57 Runnable socketThread = new Runnable() { 58 public void run() { 59 60 try { 61 62 socket=new Socket("192.168.1.100",1992); 63 64 Toast.makeText(MainActivity.this, "ok", 3000).show(); 65 } catch (Exception e) { 66 // TODO Auto-generated catch block 67 e.printStackTrace(); 68 } 69 } 70 }; 71 72 90 @Override 91 public boolean onCreateOptionsMenu(Menu menu) { 92 getMenuInflater().inflate(R.menu.activity_main, menu); 93 return true; 94 } 95 96 97 }?
注意這部分:
setContentView(R.layout.activity_main); ?????? ???????
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() ???????
.detectDiskReads().detectDiskWrites().detectNetwork() ???????
.penaltyLog().build()); ????
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() ??????
? .detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath() ????
??? .build());
我也搞不懂為什么,網上說socket連接要在另一個線程里面進行,我試了也沒用,后來加了這段就有用了。
?
布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"???? xmlns:tools="http://schemas.android.com/tools"???? android:layout_width="match_parent"???? android:layout_height="match_parent" >
<Button????????
android:id="@+id/button1"????????
android:layout_width="wrap_content"????????
android:layout_height="wrap_content"????????
android:layout_alignBottom="@+id/textView1"???????
? android:layout_alignLeft="@+id/textView1"?????
??? android:text="con" />
</RelativeLayout>
?
暫時就這么多,詳細使用下回分解。
轉載于:https://www.cnblogs.com/whisper-xp/archive/2013/05/05/3060696.html
總結
以上是生活随笔為你收集整理的android开发实例-socket(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS2010中的sln,suo分别是什么
- 下一篇: Linux 系统添加静态路由的方法