歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android之socket網絡編程

最近在學習Android關於網絡編程的知識,在這個過程中也遇到了不少問題,這篇文章是android基於socket的網絡編程,能讓人更好的了解網絡編程底層的相關知識。其他話就不說了,直接看代碼吧。

服務器端采用的是圖形化界面:

  1. package com.app.qrs;  
  2.   
  3. import java.awt.Container;  
  4. import java.awt.event.ActionEvent;  
  5. import java.awt.event.ActionListener;  
  6. import java.io.OutputStream;  
  7. import java.net.InetAddress;  
  8. import java.net.ServerSocket;  
  9. import java.net.Socket;  
  10.   
  11. import javax.swing.JButton;  
  12. import javax.swing.JFrame;  
  13. import javax.swing.JLabel;  
  14. import javax.swing.JPanel;  
  15. import javax.swing.JTextField;  
  16.   
  17. class Myserver extends JFrame implements ActionListener{  
  18.     public static final String Server_Message = "服務器發布的信息:";  
  19.     private JTextField messagetext;  
  20.     private JButton ok;  
  21.     public static String servermsg = "hello android Client! 我是該程序的程序員:吳偉棟!";  
  22.     public  Myserver()  
  23.     {  
  24.      super("信息發布");  
  25.      Container c = getContentPane();  
  26.         JPanel panel = new JPanel();  
  27.         JLabel lablename = new JLabel(Server_Message);  
  28.         messagetext = new JTextField(30);  
  29.         messagetext.addActionListener(this);  
  30.         panel.add(lablename);  
  31.         panel.add(messagetext);  
  32.         ok = new JButton("確定");  
  33.         ok.addActionListener(this);  
  34.         panel.add(ok);  
  35.         c.add(panel);  
  36.     }  
  37.     public static ServerSocket server;  
  38.  /** 
  39.   * @param args 
  40.   */  
  41.  public static void main(String[] args) {  
  42.   Myserver ms = new Myserver();  
  43.   ms.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  44.   ms.setSize(280160);  
  45.   ms.setVisible(true);  
  46.     
  47.   try  
  48.   {  
  49.      
  50.    server = new ServerSocket(10000);  
  51.    System.out.println(InetAddress.getLocalHost());  
  52.    while(true)  
  53.    {  
  54.      System.out.println("------------->"+servermsg);  
  55.      Socket socket = server.accept();  
  56.      OutputStream out = socket.getOutputStream();  
  57.      String msg = servermsg;  
  58.      out.write(msg.getBytes());  
  59.      socket.close();  
  60.    }  
  61.   }catch(Exception e)  
  62.   {  
  63.    e.printStackTrace();  
  64.   }  
  65.   // TODO Auto-generated method stub   
  66.   
  67.  }  
  68.  @Override  
  69.  public void actionPerformed(ActionEvent e) {  
  70.   /* 
  71.    *  
  72.    * 數據緩存解決了客服端存在中間一段黑屏的效果 
  73.    * 即在客服端第一次點擊刷新按鈕時會有黑屏效果 
  74.    * 第二次才能出現信息。 
  75.    * 但在客服端還是存在bug(服務器未更新信息,客服端多次刷新的時候) 
  76.    * **/  
  77.     String servermsgbuffer = new String();  
  78.     servermsgbuffer=messagetext.getText();  
  79.     servermsg = servermsgbuffer;  
  80.     
  81.  }  
  82. }  
Copyright © Linux教程網 All Rights Reserved