java socket 编程 服务器一直监听
来源:互联网 发布:淘宝一般违规累计扣分 编辑:程序博客网 时间:2024/06/06 17:30
转载地址:http://haohaoxuexi.iteye.com/blog/1979837
服务器端Server
package com.jeiao.socket;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.Writer;import java.net.ServerSocket;import java.net.Socket;public class Server { public static void main(String args[]) throws IOException { //为了简单起见,所有的异常信息都往外抛 int port = 8899; //定义一个ServerSocket监听在端口8899上 ServerSocket server = new ServerSocket(port); while (true) { //server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的 Socket socket = server.accept(); //每接收到一个Socket就建立一个新的线程来处理它 new Thread(new Task(socket)).start(); } } /** * 用来处理Socket请求的 */ static class Task implements Runnable { private Socket socket; public Task(Socket socket) { this.socket = socket; } public void run() { try { handleSocket(); } catch (Exception e) { e.printStackTrace(); } } /** * 跟客户端Socket进行通信 * @throws Exception */ private void handleSocket() throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "GBK")); StringBuilder sb = new StringBuilder(); String temp; int index; while ((temp=br.readLine()) != null) { System.out.println(temp); if ((index = temp.indexOf("eof")) != -1) {//遇到eof时就结束接收 sb.append(temp.substring(0, index)); break; } sb.append(temp); } System.out.println("客户端: " + sb); //读完后写一句 Writer writer = new OutputStreamWriter(socket.getOutputStream(), "UTF-8"); writer.write("你好,客户端。"); writer.write("eof\n"); writer.flush(); writer.close(); br.close(); socket.close(); } }}
客户端Client
package com.jeiao.socket;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.Writer;import java.net.Socket;import java.net.SocketTimeoutException;public class Client { public static void main(String args[]) throws Exception { //为了简单起见,所有的异常都直接往外抛 String host = "127.0.0.1"; //要连接的服务端IP地址 int port = 8899; //要连接的服务端对应的监听端口 //与服务端建立连接 Socket client = new Socket(host, port); //建立连接后就可以往服务端写数据了 Writer writer = new OutputStreamWriter(client.getOutputStream(), "GBK"); writer.write("你好,服务端。"); writer.write("eof\n"); writer.flush(); //写完以后进行读操作 BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream(), "UTF-8")); //设置超时间为10秒 client.setSoTimeout(10*1000); StringBuffer sb = new StringBuffer(); String temp; int index; try { while ((temp=br.readLine()) != null) { if ((index = temp.indexOf("eof")) != -1) { sb.append(temp.substring(0, index)); break; } sb.append(temp); } } catch (SocketTimeoutException e) { System.out.println("数据读取超时。"); } System.out.println("服务端: " + sb); writer.close(); br.close(); client.close(); }}
0 0
- java socket 编程 服务器一直监听
- Socket编程上篇-----服务器监听与连接
- Socket怎么在客户端一直监听Socket服务器的端口号
- Java 网络编程 服务器Socket
- Java网络编程 服务器Socket
- socket编程服务器监听绑定端口被占用解决方法
- Java Socket编程(三)服务器Sockets
- Java Socket编程(三) 服务器Sockets
- Java Socket编程(服务器与客户端通信)
- java socket编程服务器接收不到数据
- Java Socket编程(三) 并发服务器
- Java Socket编程(四) 异步服务器
- java socket编程(服务器与客户端)
- Socket编程之Select()监听
- TCP Socket服务器编程
- TCP Socket服务器编程
- TCP Socket服务器编程
- TCP Socket服务器编程
- 强大的网页性能测试工具--Speed Tracer
- CentOS安装nodejs
- CLRS 8.3基数排序
- 跟着猫哥学Golang[3] - if else
- 简单齐全的webview与H5 交互 多中自定义进度条
- java socket 编程 服务器一直监听
- 反射-访问类变量的方法
- 九度OJ 1189:还是约瑟夫环 (约瑟夫环)
- Storm——Storm集成kafka
- 使用NDK过程中出现“Unresolved inclusion jni.h”
- JS与Native交互初识
- Linux命令大全----系统管理相关命令
- struts2 之配置拦截器使网站页面在session失效后退回到登录页面
- php数组