Java的Socket通信(多Clients/Server模型)
2015-10-09 23:02
316 查看
所谓多clients/Server模型,就是说一个server程序可以与多个client连接,对各个client的事务进行处理。其他的不说了,直接上代码,大家应该可以看懂的。这是我在vijio上“偷”测试数据的程序,把Main程序(也就是client)叫上去,就可以把读入的测试数据发到我电脑上的Receiver上来
Client端程序
服务器端
Client端程序
import java.io.*; import java.net.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Socket socket = new Socket("***.***.***.***", 4700); PrintWriter os = new PrintWriter(socket.getOutputStream()); Scanner sc = new Scanner(System.in); int n, c; n = sc.nextInt(); c = sc.nextInt(); int[] fa = new int ; for (int i = 1; i <= n-1; i++) fa[i] = sc.nextInt(); sc.close(); os.println(String.valueOf(n)); os.println(String.valueOf(c)); for (int i = 1; i <= n-1; i++) os.println(String.valueOf(fa[i])); os.flush(); os.close(); socket.close(); } }
服务器端
import java.io.*; import java.net.*; public class Receiver { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub ServerSocket server = new ServerSocket(4700); for (int i = 0; i < 20; i++) { Socket socket = server.accept(); Runnable r = new ThreadHandler(socket, i); Thread t = new Thread(r); t.start(); } server.close(); } } class ThreadHandler implements Runnable { private Socket socket; private int num; public ThreadHandler(Socket i, int index) { socket = i; num = index; } @Override public void run() { // TODO Auto-generated method stub try { BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream())); FileWriter out = new FileWriter(new File("Input/input" + num + ".txt")); String tmp; int n; tmp = is.readLine(); n = Integer.parseInt(tmp); out.write(tmp + "\n"); out.write(is.readLine() + "\n"); for (int j = 1; j <= n-1; j++) { out.write(is.readLine() + "\n"); } out.flush(); out.close(); is.close(); socket.close(); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- Java高级5
- java核心技术卷一第一天
- OGNL报错:Exception in thread "main" java.lang.ExceptionInInitializerError
- Java 类加载与初始化
- Java数组课后习题
- JAVA_SE基础——40.super关键字
- Java冒泡排序与直接选择排序代码随笔
- Java类什么时候开始初始化
- java类和对象的基础(笔记)
- JavaSE的一些基础内容
- CSDN第一篇
- Java HashMap
- JDK1.5与1.6在Override上的区别
- Java8的新特新学习
- Java简易快排
- 温故知新: Java知识点终极列表(下)
- 温故知新: Java知识点终极列表(上)
- java 文件读写工具类
- java 读取键盘输入到txt文件,统计每个单词出现的次数并输出
- java 初级之封装的实现步骤