- 浏览: 458757 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (272)
- java基础 (59)
- struts (8)
- spring (8)
- 数据库 (8)
- java 网络编程 (29)
- hibernate (3)
- JavaScript (10)
- 日志管理 (2)
- jsp (4)
- servlet (7)
- xml (4)
- ajax (2)
- web service (4)
- 算法与数据结构 (13)
- java 反射机制 (11)
- java 泛型 (3)
- java I/O (8)
- java 线程 (12)
- JavaEE (6)
- java解惑 (33)
- 工具 (5)
- MyEclipse编程实践 (1)
- OSGI (2)
- 设计模式 (9)
- 正则表达式 (0)
- EJB (3)
- Ubuntu linux (6)
- Android (1)
- web前端 (2)
- 找工作 (1)
- SCA (1)
- maven (1)
- 缓存 (1)
- json (1)
- javamail (1)
- 工作笔记 (2)
最新评论
-
霜花似雪:
博主可以分享一下源码吗?
使用maven构建web项目实例 -
王庆波-行:
很好的demo!
memcache使用实例 -
surpassno:
大写的牛逼
java可视化显示内存使用情况 -
zhulin0504:
怎么访问NetEcho.html页面呀???
applet与servlet的网络通信 -
springdata:
java多线程实例demo源代码下载:http://www.z ...
java多线程例子
1,简化的服务器端程序
先运行此程序,控制台显示Listening....,再在命令行中运行 telnet localhost 8123,显示
Listening....
connection made to bupt(0:0:0:0:0:0:0:1)
Listening....
说明服务器一直在监听,直到有客户端连接为止
2,单连接,只连接一次就关闭服务器
先运行此程序,再在命令行中运行 telnet localhost 1234
如下图所示
2,客户端输入控制服务器端输出
先运行此程序,再在命令行中运行 telnet localhost 1234,输入count后
3,tcp连接传递数据
客户端
服务器端
执行结果:
4,tcp传递对象
客户端
服务器端
5,以上均是单客户端,以下是用多线程实现的多个客户端同时响应的服务器端程序
6,用java中的zip减少发送数据量
服务器端
客户端
执行结果和上面无两样
package tcp; import java.io.IOException; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; //简单化的服务器端程序,用到ServerSocket类,不做任何事,只是在碰到有连接的时候停顿3秒 public class Techo { public static void main(String[] args) { try { ServerSocket server = new ServerSocket(8123); //如果端口已占用会出现异常,例如运行两次此程序第二个会有异常 while(true){ System.out.println("Listening...."); Socket socket = server.accept(); //监听到了的连接,这个调用会阻塞,因此程序会挂起,直到一台客户端计算机连接到它 InetAddress addr = socket.getInetAddress(); //得到客户端的ip地址 System.out.println("connection made to "+addr.getHostName()+"("+addr.getHostAddress()+")"); pause(3000); socket.close(); } } catch (IOException e) { e.printStackTrace(); } } private static void pause(int i) { try { Thread.sleep(i); } catch (InterruptedException e) { e.printStackTrace(); } } }
先运行此程序,控制台显示Listening....,再在命令行中运行 telnet localhost 8123,显示
Listening....
connection made to bupt(0:0:0:0:0:0:0:1)
Listening....
说明服务器一直在监听,直到有客户端连接为止
2,单连接,只连接一次就关闭服务器
package tcp; import java.io.IOException; import java.io.PrintStream; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; //允许单连接的 public class BeerServer { public static void main(String[] args) { try { ServerSocket server = new ServerSocket(1234); //如果端口已占用会出现异常,例如运行两次此程序第二个会有异常 System.out.println("Listening...."); Socket socket = server.accept(); //监听到了的连接,这个调用会阻塞,因此程序会挂起,直到一台客户端计算机连接到它 InetAddress addr = socket.getInetAddress(); //得到客户端的ip地址 System.out.println("connection made to "+addr.getHostName()+"("+addr.getHostAddress()+")"); server.close();//no more connect,只要建立一个连接后就关闭 // PrintStream不做什么,必须和流联系在一起 PrintStream psstream = new PrintStream(socket.getOutputStream()); for(int i =10;i>=0;i--){ psstream.println(i+" bottles of beer on the wall"); } psstream.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }
先运行此程序,再在命令行中运行 telnet localhost 1234
如下图所示
2,客户端输入控制服务器端输出
package tcp; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; //客户端指定信息来控制服务器输出 public class BeerServer1 { public static void main(String[] args) { try { ServerSocket server = new ServerSocket(1234); //如果端口已占用会出现异常,例如运行两次此程序第二个会有异常 System.out.println("Listening...."); Socket socket = server.accept(); //监听到了的连接,这个调用会阻塞,因此程序会挂起,直到一台客户端计算机连接到它 InetAddress addr = socket.getInetAddress(); //得到客户端的ip地址 System.out.println("connection made to "+addr.getHostName()+"("+addr.getHostAddress()+")"); server.close();//no more connect,只向单个客户端显示消息 // PrintStream不做什么,必须和流联系在一起 PrintStream psstream = new PrintStream(socket.getOutputStream()); // ========== 与上一个不同之处 ============= //ask for count psstream.print("count? "); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); // read and parse it String line = input.readLine(); psstream.println(" "); int count = Integer.parseInt(line); // ========== 与上一个不同之处 ============= for(int i =count;i>=0;i--){ psstream.println(i+" bottles of beer on the wall"); } psstream.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }
先运行此程序,再在命令行中运行 telnet localhost 1234,输入count后
3,tcp连接传递数据
客户端
package tcp.data; import java.io.DataInputStream; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; //客户端取出浮点型数据pi值 public class DataClient { public static void main(String[] args) { try { Socket socket = new Socket(args[0],1234); DataInputStream dis = new DataInputStream(socket.getInputStream()); float f = dis.readFloat(); System.out.println("PI="+f); dis.close(); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
服务器端
package tcp.data; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; //一个特定的java服务器端程序能用专门的流传送输入的数据或者对象 public class DataServer { public static void main(String[] args) { try { ServerSocket server = new ServerSocket(1234); //如果端口已占用会出现异常,例如运行两次此程序第二个会有异常 System.out.println("Listening...."); Socket socket = server.accept(); //监听到了的连接,这个调用会阻塞,因此程序会挂起,直到一台客户端计算机连接到它 DataOutputStream dsstream = new DataOutputStream(socket.getOutputStream()); dsstream.writeFloat(3.14159265f); dsstream.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }
执行结果:
4,tcp传递对象
客户端
package tcp.obj; import java.io.IOException; import java.io.ObjectInputStream; import java.net.Socket; import java.net.UnknownHostException; import java.util.List; //一个特定的java客户端程序,从服务器端读对象 public class ObjClient { public static void main(String[] args) throws ClassNotFoundException { try { Socket socket = new Socket(args[0], 1234); ObjectInputStream ois = new ObjectInputStream(socket .getInputStream()); List hash = (List) ois.readObject(); System.out.println(hash); ois.close(); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
服务器端
package tcp.obj; import java.io.IOException; import java.io.ObjectOutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List; //服务器端,对象传递数据 public class ObjServer { public static void main(String[] args) { try { ServerSocket server = new ServerSocket(1234); //如果端口已占用会出现异常,例如运行两次此程序第二个会有异常 List<String> list = new ArrayList<String>(); list.add("first"); list.add("second"); while(true){ //一直在监听 System.out.println("Listening...."); Socket socket = server.accept(); //监听到了的连接,这个调用会阻塞,因此程序会挂起,直到一台客户端计算机连接到它 ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); oos.writeObject(list); oos.close(); socket.close(); } } catch (IOException e) { e.printStackTrace(); } } }
5,以上均是单客户端,以下是用多线程实现的多个客户端同时响应的服务器端程序
package tcp.multiclient; import java.io.IOException; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; //使用线程,允许服务器一次处理多个客户端的请求 public class MTServer extends Thread { //或implements Runnable Socket client; public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(1234); System.out.println("Listening...."); while (true) { // 一直监听,每监听到一个连接,启动一个线程 ,可以考虑用线程池???? Socket socket = server.accept(); System.out.println("Connected...."); new MTServer(socket).start(); // 执行run方法 // new Thread(new MTServer(socket)).start(); 如果是实现runnable接口 } } public MTServer(Socket client) { super(); this.client = client; } public void run() { try { PrintStream psstream = new PrintStream(client.getOutputStream()); for (int i = 10; i >= 0; i--) { psstream.println(i + " bottles of beer on the wall"); } psstream.close(); client.close(); } catch (IOException e) { e.printStackTrace(); } } }
6,用java中的zip减少发送数据量
服务器端
package tcp.zipUnzip; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.zip.GZIPInputStream; //使用java的压缩类减少数据量,服务器端 public class CompRcv { public static void main(String[] args) throws NumberFormatException, IOException { ServerSocket server = new ServerSocket(Integer.parseInt(args[0])); System.out.println("Listening...."); Socket socket = server.accept(); [color=red]GZIPInputStream zip = new GZIPInputStream(socket.getInputStream());[/color] while(true){ int c; c = zip.read(); if(c==-1)break; System.out.println((char)c); //中文读不出来 } } }
客户端
package tcp.zipUnzip; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; import java.util.zip.GZIPOutputStream; //客户端发送压缩文件到服务器,参数为主机名,端口号,发送的文件 public class CompSend { public static void main(String[] args) throws NumberFormatException, UnknownHostException, IOException { Socket socket = new Socket(args[0],Integer.parseInt(args[1])); [color=red]GZIPOutputStream zip = new GZIPOutputStream(socket.getOutputStream());[/color] String line; BufferedReader reader = new BufferedReader(new FileReader(args[2])); while(true){ line = reader.readLine(); if(line==null)break; line = line+"\n"; zip.write(line.getBytes(),0,line.length()); } zip.finish(); zip.close(); socket.close(); } }
执行结果和上面无两样
发表评论
-
计算机网络知识
2011-06-01 16:19 761一个http请求的详细过程 我们来看当我们在浏览器输入htt ... -
java udp socket实例
2010-12-06 12:28 7092客户端: package udp; import jav ... -
线程池实现tcp socket
2010-12-01 17:23 2847前面的程序,当一个客户端请求到来时,服务器端就会临时性的创建一 ... -
tcp socket实例(改进)
2010-12-01 16:16 1567上一篇的程序服务器端只能接受一个客户端请求,本篇改为模拟多客户 ... -
java tcp socket实例
2010-12-01 13:44 1597网络编程的基本模型就是客户端到服务器端模型,一段必须提供一个固 ... -
telnet协议(转)
2010-10-14 17:17 1111我们知道Telnet服务器软 ... -
whois协议(转)
2010-10-14 14:28 1335当我们预备建立一个Web站点,就必须向域名登记机构申请一个In ... -
java 网络协议(一)Tcp多线程服务器端编程
2010-10-14 11:33 54591,通用服务器代码: package multiThread; ... -
java 网络协议(一)UDP
2010-10-14 09:24 1435UDP测试程序,无需建立连接 package udp; ... -
java 网络协议(一)InetAddress和Socket(含源码)
2010-10-14 08:24 18571,ip地址和主机名互换 package getip; ... -
ftp协议2(转)
2010-10-12 16:26 938FTP协议工作原理 FTP有 ... -
ftp协议(转)
2010-10-12 16:21 1236ftp协议 FTP协议将使用两 ... -
SMTP服务协议(转)
2010-10-11 15:31 1211SMTP服务概述 鉴于本课程的默认读者群是那些对Inter ... -
利用socket发送接收邮件(转)
2010-10-11 15:18 4154这是在网上摘的,执行接收邮件出现:530 Authentica ... -
jdk6.0从入门到精通-----chapter5网络编程 新I/O(含源码下载)
2010-09-21 10:13 1395本例向用户通过参数指定的主机端口发送一段请求报文,然后读取和打 ... -
jdk6.0从入门到精通-----chapter6--http
2010-09-14 16:32 910用httpconnection进行文件下载,建立一般的jav ... -
java自学===Filter类的应用,验证用户
2010-09-14 14:37 910Filter类 package com; import ... -
java自学===Filter类的应用,网站数量统计
2010-09-14 12:31 1908package filterStatistic; imp ... -
jdk6.0从入门到精通-----chapter5网络编程 udp套接字
2010-09-12 13:46 1129用到的主要类DatagramPacket,DatagramSo ... -
jdk6.0从入门到精通-----chapter5网络编程 tcp连接池
2010-09-10 18:07 957package pool; import java.ne ...
相关推荐
Java网络编程之TCP协议下—上传文件到服务器程序,欢迎大家下载和知道
java网络通信,使用TCP协议,代码可直接导入运行。完整的UI界面方便大家学习
Java编写的计算机网络tcp协议验证,TCP协议之间的可靠传输,或者丢包出错处理,以及校验和的检验
通过java网络编程初步理解TCP/IP协议 源码包每一行都有注释,在代码里面每一个类都有详细的注释来解释这个类的功能这个方法的功能,调用哪一个类的哪一个功能等等。 压缩包包含实验报告(实验原理、实验环境、实验...
先运行服务器 再运行客户端 希望对你们有帮助 希望在此基础上加以改进后 您再传上来 供大家分享
昨天写的,发来晒晒,同时希望大家一起学习下,给点意见
tcp网络通讯协议demo,java网络通讯,网络通协议,java网络编程,java网络通讯协议
介绍了Java网络编程中很重要得一个方面——Tcp协议,其中的例子详细介绍了Tcp编程的过程
1、本项目则是使用Java实现TCP的Socket网络通信,包含C/S软件架构的程序设计,偏向实践,更加有趣! 2、实现简单有趣的“创意”聊天机器人。 3、建立通信规则: Server和Client之间需要约定相同的规则,保证正常通信...
文件传输是应用层中的一个主要协议,负责将主机中文件从一台机器送到另一台机器。传输协议采用客户、服务器的工作模式...利用Java网络编程技术、多线程技术、数据流等技术实现客户端与服务器端的双向各种信息的传递 。
T/TCP协议 2.1 概述 23 2.2 T/TCP中的新TCP选项 23 2.3 T/TCP实现所需变量 25 2.4 状态变迁图 27 2.5 T/TCP的扩展状态 28 2.6 小结 30
TCP事务协议 第1章 T/TCP概述 1.1 概述 1.2 UDP上的客户-服务器 1.3 TCP上的客户-服务器 6 1.4 T/TCP上的客户-服务器 12 1.5 测试网络 15 1.6 时间测量程序 15 1.7 应用 17 1.8 历史 19 1.9 实现 20 1.10 小结 21
java对接modbus RTU、TCP 网口串口都支持 的 工具jar
MODBUS工具安装包 JAVA modbud tcp协议解析工具
本书就是为了满足读者在这方面知识的需求而编写的一本TCP/IP协议与基于TCP/IP编程方面的书籍。 本书有以下几个方面的特点: (1)内容的组织上按照协议原理与协议编程分为上、下篇。上篇主要介绍TCP/IP协议簇中的...
计算机网络课程设计——端口扫描器的实现 1.利用Socket通信机制实现一个多线程的端口扫描器。 2.设计要求: 2.1用户界面:用户可以输入IP地址或IP地址段;...2.3 采用Java网络编程包java.io中提供的编程接口实现。
java tcp协议实现两端通讯,计算机网络的实验
java TCP网络通信聊天室(源码+演示视频+报告论文6000字)
自已写的通信功能,两个机器互发信息,东西虽小,技术却一点没少,新手学习很方便
第25章 SNMP:简单网络管理协议 270 25.1 引言 270 25.2 协议 270 25.3 管理信息结构 272 25.4 对象标识符 274 25.5 管理信息库介绍 274 25.6 实例标识 276 25.6.1 简单变量 276 25.6.2 表格 276 25.6.3 字典式排序 ...