Java Socket编程 标准范例(多线程)
来源:互联网 发布:舆论是什么知乎 编辑:程序博客网 时间:2024/05/18 03:23
服务器端(Server)非多线程
package com.zeph.serverclient; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class MyServer { public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(5678); Socket client = server.accept(); BufferedReader in = new BufferedReader(new InputStreamReader( client.getInputStream())); PrintWriter out = new PrintWriter(client.getOutputStream()); while (true) { String str = in.readLine(); System.out.println(str); out.println("has receive...."); out.flush(); if (str.equals("end")) break; } client.close(); } }
客户端(Client)
<pre name="code" class="java"> package com.zeph.serverclient; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; public class MyClient { static Socket server; public static void main(String[] args) throws Exception { server = new Socket(InetAddress.getLocalHost(), 5678); BufferedReader in = new BufferedReader(new InputStreamReader( server.getInputStream())); PrintWriter out = new PrintWriter(server.getOutputStream()); BufferedReader wt = new BufferedReader(new InputStreamReader(System.in)); while (true) { String str = wt.readLine(); out.println(str); out.flush(); if (str.equals("end")) { break; } System.out.println(in.readLine()); } server.close(); } }
服务器端(Server)多线程
<pre name="code" class="java"> package com.zeph.multiclient; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class MultiClient extends Thread { private Socket client; public MultiClient(Socket c) { this.client = c; } public void run() { try { BufferedReader in = new BufferedReader(new InputStreamReader( client.getInputStream())); PrintWriter out = new PrintWriter(client.getOutputStream()); // Mutil User but can't parallel while (true) { String str = in.readLine(); System.out.println(str); out.println("has receive...."); out.flush(); if (str.equals("end")) break; } client.close(); } catch (IOException ex) { } finally { } } public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(5678); while (true) { // transfer location change Single User or Multi User MultiClient mc = new MultiClient(server.accept()); mc.start(); } } }
测试这个代码的时候可以直接用DOS控制台上面运行,这样看的效果更清楚!
服务器基本步骤:
1.指定端口实例化一个SeverSocket
2.调用ServerSocket的accept()方法,以在等待连接期间造成阻塞
3.获取位于该底层的Socket的流以进行读写操作
4.将数据封装成流
5.对Socket进行读写
6.关闭打开的流
客户端基本步骤:
1.通过IP地址和端口实例化Socket,请求连接服务器
2.获得Socket上的流以进行读写
3.把流封装进BufferedReader/PrintWriter的实例
4.对Socket进行读写
5.关闭打开的流
0 0
- Java Socket编程 标准范例(多线程)
- Java Socket编程 标准范例(多线程)
- Java Socket编程 标准范例(多线程)
- Java Socket编程 标准范例(多线程)
- Java Socket编程 标准范例(多线程)
- Java Socket编程 标准范例(多线程)
- Java Socket编程 标准范例(多线程)
- Java Socket编程 标准范例(多线程)
- Java Socket编程 标准范例(多线程)
- Java Socket编程 标准范例(多线程)
- java socket编程范例
- [Java] Java Socket编程范例
- python多线程在socket编程中的应用(代码范例)
- java socket多线程编程
- java socket多线程编程
- java socket 多线程编程
- Java socket编程(单线程socket,多线程socket)
- Socket编程基础范例
- hdu1151Air Raid poj2594Treasure Exploration题解
- 自定义属性--理解
- 数据结构——基本概念和术语
- Java面向对象(7)接口
- 洛谷 P1582 倒水
- Java Socket编程 标准范例(多线程)
- 一道面试题:两个Fragment在replace/add 和 hide/show不同情况下来回跳转生命周期的变化
- java中final和static总结
- WEUI应用,用JS封装常用信息提示的弹层—Dialog
- 用flask开发个人博客(12)—— 自定义错误界面
- 删除TableView中单个cell的分割线
- *[Lintcode]加油站
- 洛谷 P2625 豪华游轮
- 动态链接与静态链接的区别