- 浏览: 1588743 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
UDP,简单聊天程序
TCP,上传文件到服务端
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; /** * 编写一个聊天程序 * 有收数据的部分,和发送数据的部分 * 这两部分需要同时执行 * 那就需要用到多线程技术 * 一个线程控制收,一个线程控制发. * * 因为收和发动作是不一致的,所以需要定义run方法 * 而且这两个方法需要封装到不同的类中 */ class Send implements Runnable{ private DatagramSocket ds; Send(DatagramSocket ds){ this.ds=ds; } public void run(){ try { BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in)); String line=null; while((line=bufr.readLine())!=null){ if("886".equals(line)) break; byte[] buf=line.getBytes(); DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.121"),10000); ds.send(dp); } ds.close(); } catch (IOException e) { throw new RuntimeException("发送端失败!"); } } } class Rece implements Runnable{ private DatagramSocket ds; Rece(DatagramSocket ds){ this.ds=ds; } public void run(){ try { while(true){ byte[]buf=new byte[1024]; DatagramPacket dp=new DatagramPacket(buf,buf.length); ds.receive(dp); String ip=dp.getAddress().getHostAddress(); String data=new String(dp.getData(),0,dp.getLength()); System.out.println(ip+"::"+data); } } catch (IOException e) { throw new RuntimeException("接受失败!"); } } } public class Chatdemo { public static void main(String[] args) throws SocketException { DatagramSocket sendSocket=new DatagramSocket(); DatagramSocket receSocket=new DatagramSocket(10000); new Thread(new Send(sendSocket)).start(); new Thread(new Rece(receSocket)).start(); } }
TCP,上传文件到服务端
import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; /** * 将客户端的一个文件复制到服务端 * * 必须加入结束标记:否则 程序 都会 等着 * 1.第一种:加入自定义标记 "over" : 不靠谱, 容易传输的数据 重复,这样 造成服务端 提前结束 * 2.加入 时间戳 客户端 在开始传输数据的时候,首先就传输一个时间戳 ,作为标记;(发现 流对象 用的特别多) * 3.标准方式: socket 的 shutdownOutput() shutdowninput() */ class TextClient{ public static void main(String[] args) throws IOException{ Socket s=new Socket("192.168.1.121",1000); /*//方法二: 时间戳 DataOutputStream dos=new DataOutputStream(s.getOutputStream()); long time=System.currentTimeMillis(); dos.writeLong(time);*/ BufferedReader bufr=new BufferedReader(new FileReader("E:\\workspace4\\exam\\src\\com\\itheima\\day23\\TcpDemo3.java")); PrintWriter out=new PrintWriter(s.getOutputStream(),true); //out.println(time+""); 方法二: 这样也行 String line=null; while((line=bufr.readLine())!=null){ out.println(line); } /*//方法一: 由于没有结束标记 最后 两个程序 "都等着了" 容易和文本中的数据重复 如果文本中有 over呢 这样 服务器端就会提前 结束,并发生 "上传成功" out.println("over"); //out.println(time+""); 方法二: 这样也行 //方法二: 时间戳 dos.writeLong(time);*/ //方法三: s.shutdownOutput();// 关闭客户端的额输出信息 服务端不用做什么 ,会自动识别 客户端 已经输出完毕. BufferedReader bufs=new BufferedReader(new InputStreamReader(s.getInputStream())); String str=bufs.readLine(); System.out.println(str); bufr.close(); //dos.close(); s.close(); } } class TextServer{ public static void main(String[] args) throws IOException{ ServerSocket ss=new ServerSocket(1000); Socket s=ss.accept(); String ip=s.getInetAddress().getHostAddress(); System.out.println(ip+"..connected"); /* //方法二: 开始前就读取 客户端发送过来的标记 DataInputStream dis=new DataInputStream(s.getInputStream()); long time=dis.readLong(); */ BufferedReader bufr=new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter outf=new PrintWriter(new FileWriter("E:\\server.txt"),true); String line=null; while((line=bufr.readLine())!=null){ /*if("over".equals(line)) //方法一: 加入标记后就 可以跳出了 "等待了" 发现这种标记容易重复 break; if(String.valueOf(time).equals(line)) //方法二: 标记 break; */ outf.println(line); } PrintWriter out=new PrintWriter(s.getOutputStream(),true); out.println("上传成功"); outf.close(); s.close(); } }
发表评论
-
检测一个字符串是否在jvm的常量池中
2018-12-18 17:34 995public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2280经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5650package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 980import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1054/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 1005//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1822更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1416import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 813import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2396import java.util.concurrent ... -
jdk1.5 锁 Lock 和 Condition
2016-08-02 17:03 922// lock 练习 public class Lock ... -
JDK1.5 获取线程执行结果 Callable Future
2016-08-02 15:08 1171import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 800import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1144import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3889import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 964/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 1020import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1838Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 1001/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2228package out; import ja ...
相关推荐
java读写Modbus TCP UDP数据,java与modbus通信,Modbus TCP UDP与java通信 全开源 这是一个能正常通过Modbus TCP UDP协议读写项目 请放心下载,完全开源,在多个项目中已经使用
【标题】:“Java版聊天程序(UDP TCP 多线程)” 这个项目是一个基于Java编程语言实现的聊天程序,它涵盖了网络通信中的两种主要协议——用户数据报协议(UDP)和传输控制协议(TCP),同时利用了多线程技术来提高...
本资源是使用 java,分别用 TCP 和 UDP 传输文件的源代码。读者朋友可以下载下来,参考着满足自己的需求。 另有博客《Java 使用 TCP 和 UDP 传输文件》可以参考,地址是:...
Java作为一门广泛使用的编程语言,提供了丰富的API来支持TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)这两种主要的网络通信协议。下面我们将深入探讨Java如何实现TCP和UDP的测试代码,以及...
Java中的TCP和UDP Socket通信是网络编程的基础,用于在不同设备之间建立可靠的数据传输通道。TCP(Transmission Control Protocol)提供的是面向连接、有序且无损的服务,而UDP(User Datagram Protocol)则是无连接...
Java 用 Netty 写 UDP 与 TCP Netty 是由 JBOSS 提供的一个 Java 开源框架,提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty 是一个基于 NIO 的客户...
用Java编写的一个聊天程序,通信部分大部分是UDP通信
### Java 实现 TCP/UDP 通信详解 #### 实验背景及意义 随着互联网技术的不断发展,网络编程成为了软件开发中不可或缺的一部分。TCP/IP 协议作为互联网的基础协议,其重要性不言而喻。Java 作为一种广泛应用的编程...
2) 基于Java Socket TCP和UDP实现一个简易的网络文件服务程序,包含服务器端FileServer和客户端FileClient; 3) 服务器端启动时需传递root目录参数,并校验该目录是否有效; 4) 服务器启动后,开启TCP:2021端口,...
### Java UDP 和 TCP 详细介绍及实现步骤 #### 一、UDP (User Datagram Protocol) ##### 1.1 UDP 概述 UDP(用户数据报协议)是一种无连接的通讯协议,这意味着它并不像TCP那样需要先建立连接再进行数据传输。在...
在这个“TCP\UDP 服务端练习”中,你将有机会深入理解这两种协议的工作原理并实践如何在C#中实现客户端和服务端的通信。 TCP是一种面向连接的、可靠的协议。它通过建立三次握手的连接来确保数据传输的可靠性,并且...
Java是世界上最流行的编程语言之一,尤其在服务器端和网络编程领域有着广泛的应用。TCP(传输控制协议)和UDP(用户数据报协议)是网络通信中的两种主要协议,它们各有特点,适应不同的应用场景。本篇文章将深入探讨...
标题中的“UDP tcp测试工具”指的是用于检验和调试UDP(用户数据报协议)和TCP(传输控制协议)应用程序的软件工具。这些工具在开发网络通信软件时尤其重要,因为它们帮助开发者验证数据的正确传输、连接的稳定性...
在IT行业中,网络编程是不可或缺的一部分,特别是在Java开发中,TCP和UDP协议是网络通信的基础。本实验项目“tcp_udp_socket.zip”旨在帮助开发者理解如何使用Java实现TCP和UDP的Socket通信。以下将详细讲解这两个...
本篇将深入探讨如何在Java环境中使用Socket进行TCP和UDP的文件传输。 TCP是一种面向连接的、可靠的传输协议,它通过三次握手建立连接,并确保数据包按顺序到达,如果数据包丢失,TCP会自动重传。在Java中,我们可以...
在IT行业中,网络通信是至关重要的一个领域,Java作为一门广泛应用的编程语言,提供了丰富的API来支持TCP(传输控制协议)和UDP(用户数据报协议)这两种不同的网络通信方式。本篇文章将深入探讨如何使用Java实现TCP...
Socket编程是Java中用于网络通信的核心技术,它涵盖了TCP(传输控制协议)和UDP(用户数据报协议)两种主要的互联网协议。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,而UDP则是一种无连接的、不可靠...
UDP(User Datagram Protocol)和TCP(Transmission Control Protocol)是互联网协议族中的两种主要传输协议,它们在计算机网络通信中扮演着至关重要的角色。本篇文章将详细介绍这两种协议以及相关的端口测试工具。 ...
java多线程实现TCP连接UDP聊天的聊天程序
在Java编程语言中,TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的网络通信协议,用于在互联网上实现数据的可靠传输。本文将深入探讨这两种协议的基本概念,以及如何使用纯Java来实现TCP和UDP的示例代码。...