《安卓网络编程》之第七篇 java编写Service程序

  1 import java.io.*;
  2 import java.awt.*;
  3 import java.awt.event.*;
  4 import javax.swing.*;
  5 import java.net.*;
  6 import java.util.*;
  7
  8 class Conn extends Thread{
  9     private JTextArea txt;
 10     private Socket st;
 11     private String msg = null;
 12     private BufferedReader br = null;
 13     private PrintStream ps;
 14     public Conn(Socket st,JTextArea txt){
 15         this.st = st;
 16         this.txt = txt;
 17         start();
 18     }
 19     public void run(){
 20         try{
 21             br = new BufferedReader(new InputStreamReader(st.getInputStream()));
 22             ps = new PrintStream(new DataOutputStream(st.getOutputStream()));
 23         }catch(Exception e){
 24             System.err.println("input failed");
 25         }
 26         while(true){
 27             try{
 28                 msg = br.readLine();//阻塞方法
 29                 txt.append("从客户端收到信息:"+msg+‘\n‘);
 30                 txt.append("信息接受时间是:"+new Date()+"\n");
 31                 //创建读取文件线程,并将读取到的内容通过服务器发送出去
 32                 FileThread ft = new FileThread();
 33                 Thread t = new Thread(ft);
 34                 t.start();
 35                 while(ft.flag);
 36                 System.out.println(ft.readData);
 37                 Server.send(ft.readData);
 38
 39             }catch(Exception e){
 40                 System.err.println("connection closed");
 41                 break;
 42             }
 43         }
 44     }
 45     public void send(String msg){
 46       ps.println(msg);
 47     }
 48
 49 }
 50
 51
 52 class FileThread implements Runnable{
 53     public String readData = "";
 54     public static boolean flag = true;
 55     public void run() {
 56         readData = readFileByLines("D:\\Hello.txt");
 57         flag = false;
 58         System.out.println(readData);
 59     }
 60
 61     /**
 62      * 以行为单位读取文件,常用于读面向行的格式化文件
 63      */
 64     public String readFileByLines(String fileName) {
 65         File file = new File(fileName);
 66         BufferedReader reader = null;
 67         String tempString = null;
 68         String readData = "";
 69         try {
 70             System.out.println("以行为单位读取文件内容,一次读一整行:");
 71             reader = new BufferedReader(new FileReader(file));
 72             int line = 1;
 73
 74             // 一次读入一行,直到读入null为文件结束
 75             while ((tempString = reader.readLine()) != null) {
 76                 // 显示行号
 77 //                System.out.println("line " + line + ": " + tempString);
 78 //                line++;
 79                 readData = readData.concat(tempString);//字符串拼接推荐函数
 80             }
 81             reader.close();
 82         } catch (IOException e) {
 83             e.printStackTrace();
 84         } finally {
 85             if (reader != null) {
 86                 try {
 87                     reader.close();
 88                 } catch (IOException e1) {
 89                 }
 90             }
 91         }
 92
 93         return  readData;
 94     }
 95
 96 }
 97
 98
 99 public class Server extends JFrame{
100     private JTextArea txt;
101     private ServerSocket ss;
102     public String tempString = null;
103     private static java.util.List<Conn> conns = new ArrayList<Conn>();
104     public Server(){
105        txt = new JTextArea();
106        this.setTitle("服务器");
107        this.setLayout(new BorderLayout());
108        this.add(new JScrollPane(txt),BorderLayout.CENTER);
109        this.setSize(500,300);
110        this.setVisible(true);
111
112        run();
113     }
114     public void run(){
115         try{
116             ss = new ServerSocket(3000);
117         }catch(Exception e){
118             System.err.println("open socket failed");
119         }
120         txt.append("服务器已经启动!"+"\n");
121         while(true){
122             try{
123                 Socket st=ss.accept();
124                 conns.add(new Conn(st,txt));
125             }
126             catch(IOException ex){
127                 System.err.println(ex);
128             }
129         }
130     }
131     public static void send(String msg){
132       for(Conn c:conns)
133         c.send(msg);
134     }
135
136     public static void main(String args[]){
137
138         Server myserver=new Server();
139      }
140
141 }

另外一种写法:

时间: 2024-08-28 06:31:13

《安卓网络编程》之第七篇 java编写Service程序的相关文章

安卓 网络编程

这几天学校实训项目需要开始学习安卓编程,其中有一部分是涉及网络知识, 1 private class SendThread extends Thread 2 { 3 public SendThread(String s) 4 { 5 mURL = s; 6 } 7 public void run() 8 { 9 BasicHttpParams httpParams; 10 httpParams = new BasicHttpParams(); 11 HttpConnectionParams.se

【UNIX网络编程(三)】TCP客户/服务器程序示例

上一节给出了TCP网络编程的函数,这一节使用那些基本函数编写一个完成的TCP客户/服务器程序示例. 该例子执行的步骤如下: 1.客户从标准输入读入一行文本,并写给服务器. 2.服务器从网络输入读入这行文本,并回射给客户. 3.客户从网络输入读入这行回射文本,并显示在标准输出上. 用图描述如下: 编写TCP回射服务器程序如下: #include <stdio.h> #include <errno.h> #include <stdlib.h> #include <st

Java编写串口程序

用Java编写串口程序一般都会用到这个 http://fizzed.com/oss/rxtx-for-java 根据电脑的情况下载 解压以后有安装文档 For a JDK installation: Copy RXTXcomm.jar ---> <JAVA_HOME>\jre\lib\extCopy rxtxSerial.dll ---> <JAVA_HOME>\jre\binCopy rxtxParallel.dll ---> <JAVA_HOME>

网络编程,osi七层协议

网络编程 软件开发架构 1 c/s架构 c 客户端 s 服务端 2 b/s架构 b 浏览器 s 服务器 c/s架构就比如我们现在手机上的软件,大多数都是c/s架构 也有一些已经是b/s架构,比如微信,中的小程序,支付宝的第三方的功能. 什么是服务端,和客户端 服务端就是,24小时不间断的提供服务 客户端就是,任意时间都可以去找到服务端,寻求服务 网络编程的发展史 往往一个技术的发展都是来源与军事 网络通信具备的条件 1 物理传输介质(电话线,网线,网卡) 2 一套公共的协议(OSI协议,比如,两

UNIX网络编程笔记(4)—TCP客户/服务器程序示例

TCP客户/服务器程序示例 这一章信息量开始大起来了,粗略来看它实现了简单的TCP客户/服务器程序,里面也有一些费解的细节. 1.概述 完整的TCP客户/服务器程序示例.这个简单的例子将执行如下步骤的一个回射服务器(这里的回射服务器就是服务简单的把客户端发送的消息返回给客户): 1)客户从标准输入读入一行文本,并写给服务器 2)服务器从网络输入读入这行文本,并回射给客户 3)客户从网络输入读入这行回射文本,并显示在标准输出上 这样实际上就构成了一个全双工的TCP连接. 本章就围绕了这个简单的TC

《安卓网络编程》之第八篇 安卓与服务器之间通讯JSON

JSON是什么? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等).这些特性使JSON成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成

Java网络编程基础(七)— RMI分布式网络编程

Java RMI指的是远程方法调用(Remote Method Invocation).它是一种机制,能够让在某个机器上的Java程序调用另一个机器上的Java程序的方法,用此方法调用的任何对象必须实现该远程接口.EJB就是建立在RMI基础之上的. 本节将讲解RMI的基本概念和系统原理,通过一些入门实例讲解RMI程序的开发步骤和编译运行方法. RMI是RPC(远程过程调用)的Java版本的实现,远程过程调用是一种计算机分布式通信协议,包括Client/Server模型和分布式对象模型. RPC(

[C# 网络编程系列]专题七:UDP编程补充——UDP广播程序的实现

上次因为时间的关系,所以把上一个专题遗留下的一个问题在本专题中和大家分享下,本专题主要介绍下如何实现UDP广播的程序,下面就直接介绍实现过程和代码以及运行的结果. 一.程序实现 UDP广播程序的实现代码: [csharp] view plain copy print? using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.W

C#网络编程系列文章(七)之UdpClient实现异步UDP服务器

原创性声明 本文作者:小竹zz 本文地址http://blog.csdn.net/zhujunxxxxx/article/details/44258719 转载请注明出处 本文介绍 UdpClient 类在同步阻塞模式中为发送和接收无连接的 UDP 数据包而提供了简单的方法.因为 UDP 是一种无连接的传输协议,所以你不需要在发送和接收数据之前建立任何远程主机连接.你只需要按照下列方式来建立默认的远程主机选项: 使用远程主机名称和端口号作为参数来创建 UdpClient 类的实例. 创建 Udp