java 接收GPRS数据

代码:

package test;
import java.io.File;  
import java.io.FileWriter;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.OutputStream;  
import java.io.PrintWriter;  
import java.net.ServerSocket;  
import java.net.Socket;  
import java.util.HashMap;  
import java.util.LinkedHashMap;  
import java.util.LinkedList;  
import java.util.List;  
import java.util.Map;  
 class gprs{  
    //private static List clients = new LinkedList();  
    private static Map clients=new LinkedHashMap();  
    static PrintWriter pw = null;  
    static FileWriter fw = null;  
    public static void main(String[] args) {  
        int port = 10001;  
        try {  
            ServerSocket server = new ServerSocket(port);  

            while (true) {  

                // 获得客户端连接  
                // 阻塞式方法  
                System.out.println("准备阻塞...");  
                final Socket client = server.accept();  
                System.out.println("阻塞完成...");  
                new Thread(new Runnable() {  
                    @Override  
                    public void run() {  
                    try {  
                        InputStream is = client.getInputStream();  
                        //获取输出流 给客服的写数据  
                        OutputStream os = client.getOutputStream();  
                        byte[] buffer = new byte[1024];  
                        int len = -1;  
                        System.out.println("准备read...");  
                        while ((len = is.read(buffer)) != -1) {  
                            String text=new String(buffer,0,len);  
                            System.out.println(text);  
                            System.out.println("read完成...");  

                            if(text.startsWith("#"))  
                            {  
                                clients.put(text, client);  
                                os.write("认证成功".getBytes());  
                            }else{  
                                os.write("收到了你的请求".getBytes());  
//                              String[] split = text.split(":");  
//                              String key="#"+split[0];  
//                              String content=split[1];  
                                // 关联文件  
                                File file = new File("c:\\123.txt");  
                                if(!file.exists()){  
                                    // 判断文件不存在就new新文件,写数据  
                                    try {  
                                        file.createNewFile();  
                                        // java IO流和文件关联  
                                        pw = new PrintWriter(file);  
                                        pw.print(text + "\t");  
                                        pw.println();  
                                        pw.flush();  
                                    } catch (IOException e) {  
                                        // TODO Auto-generated catch block  
                                        e.printStackTrace();  
                                    }  

                                }else{  
                                    // 判断文件存在,就以FileWriter文件追加的方式写文件  
                                    try {  
                                        fw = new FileWriter("c:\\123.txt",true);  
                                        fw.write(text + "\r\n");  
                                        fw.flush();  
                                    } catch (IOException e) {  
                                        // TODO Auto-generated catch block  
                                        e.printStackTrace();  
                                    }  
                                }  

//                              Socket s = clients.get(key);  
//                              if(s!=null){  
//                                  OutputStream output = s.getOutputStream();  
//                                   output.write(content.getBytes());  
//                              }  
                            }  
                        }  
                        }   
                        catch (Exception e) {  
                            // TODO Auto-generated catch block  
                            e.printStackTrace();  
                        }  
                    }  
                }).start();  

        }  

    }  
        catch (Exception e) {  
            e.printStackTrace();  
        }  
}  
}  

用socketTool测试后,结果正确。
java运行后,服务器一直监听10001端口,需要去cmd中关掉进程。
1)查看占用10001端口的进程号

netstat –aon | findstr “10001”

结果:TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 6700

可知,进程号为6700的进程占用了10001端口

可以使用命令 tasklist | findstr “6700”进一步查看6700进程的具体信息。

tasklist | findstr “6700”

结果:javaw.exe 6700 Console 0 28,792 K

可知6700进程为javaw.exe。

2)杀掉进程

tskill 6700

java程序转自一位大佬的博文,现在找不到原文了。

你可能感兴趣的:(硬件与服务通信)