关键词:
一入编程深似海,从此妹子是路人。
1、Udp的客户端,服务端-----DatagramSocket
通过Udp协议编写一个群聊室,具体实现代码如下:
package day.by.day.udp.charroom; //客户端代码 import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.util.Scanner; public class Client implements Runnable{ @Override public void run() { //点名DatagramSocket快递员 try { DatagramSocket ds = new DatagramSocket(); //书写包裹信息,快递单寄件人信息 Scanner sc = new Scanner(System.in); String str; while( (str = sc.nextLine())!=null) { //包装包裹,和收件地址,快递号 DatagramPacket dp = new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"),8888); //给快递员送走 ds.send(dp); if( "over".equals(str)) { break; } } ds.close(); sc.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package day.by.day.udp.charroom; //服务端代码 import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; public class sever implements Runnable{ @Override public void run() { try { DatagramSocket ds = new DatagramSocket(8888); DatagramPacket dp = new DatagramPacket(new byte[64*1024], 64*1024); while( true) { ds.receive(dp); byte[] bs = dp.getData(); int len = dp.getLength(); InetAddress ip = dp.getAddress(); System.out.println(ip.getHostAddress()+":"+new String(bs,0,len)); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package day.by.day.udp.charroom; //执行程序 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Run { public static void main(String[] args) throws Exception { //用线程池的方法 ExecutorService pool = Executors.newCachedThreadPool(); pool.execute(new Client()); Thread.sleep(10); pool.execute(new sever()); } }
2、Tcp借助字节流传输数据,客户端---Socker, 服务端----ServerSocket
通过Tcp协议实现多级文件夹的拷贝,具体实现代码如下:
package day.by.day.tcp.copyflioder; //客户端代码 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; public class CopyFlioderTcpClient { public static void main(String[] args) { //获取文件 File folder = new File("d:/pic",".jpg"); String[] list = folder.list(); for (String file : list) { try { Socket s = new Socket("127.0.0.1",8888); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream()); //开始读取文件信息 byte[] brr = new byte[1024]; int len; while((len = bis.read(brr))!=-1) { bos.write(brr,0,len); bos.flush(); } s.shutdownOutput(); BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); System.out.println(br.readLine()); bis.close(); s.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
package day.by.day.tcp.copyflioder; //服务端代码 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; import day.by.day.shangchuantupian.test.SeverSocker; public class CopyFiloderSever { public static void main(String[] args) { try { ServerSocket ss = new ServerSocket(8888); while( true) { Socket s = ss.accept(); File file = new File("d:/", System.currentTimeMillis()+".jpg"); BufferedInputStream bis = new BufferedInputStream(s.getInputStream()); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)); byte[] brr = new byte[1024]; int len; while( ( len = bis.read(brr))!=-1) { bos.write(brr,0,len); bos.flush(); } BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); bw.write("chenggong"); bw.newLine(); bw.flush(); bos.close(); s.close(); ss.close(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
3、Tcp借助字节流传输数据,客户端---Socker, 服务端----ServerSocket
通过Tcp协议实现图片的上传,具体实现代码如下:
package day.by.day.shangchuantupian.test; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; import java.net.UnknownHostException; //客户端代码 public class SockerClient { public static void main(String[] args) { //创建socket对象获取IP地址和端口号 try { Socket s = new Socket("127.0.0.1",8888); //创建缓冲字节输入流,用来获取本地图片的字节信息 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:UsersiDesktop/222.jpg")); //在IO流池中获取输出字节流 BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream()); //开始读取图片信息 //创建缓冲数组 byte[] brr = new byte[1024]; int len; while( ( len = bis.read(brr))!=-1) { bos.write(brr); bos.flush(); } s.shutdownOutput(); //就接受服务端返回的信息 //创建缓冲输入字符流 BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); System.out.println( br.readLine()); s.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package day.by.day.shangchuantupian.test; //服务端代码 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.net.Socket; public class SeverSocker implements Runnable{ private Socket s; public SeverSocker(Socket s) { this.s = s; } @Override public void run() { //创建缓冲字节输入流 try { BufferedInputStream bis = new BufferedInputStream(s.getInputStream()); //创建缓冲字节输出流,用于生命复制图片的地址 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d:/"+System.currentTimeMillis()+".jpg")); //读取流中的图片信息 //定义缓冲数组 byte[] brr = new byte[1024]; int len; while( ( len = bis.read(brr))!=-1) { bos.write(brr,0,len); bos.flush(); } //向客户端返回信息 //定义缓冲字符输出流 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); bw.write("上传成功"); bw.newLine(); bw.flush(); s.close(); } catch (Exception e) { //处理异常 System.out.println("上传失败"); if( null != s) { try { BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); bw.write("上传成功"); bw.newLine(); bw.flush(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } e.printStackTrace(); }finally { if( null != s) { try { s.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
package day.by.day.shangchuantupian.test; //执行代码 import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Test { public static void main(String[] args) { //创建seversocket对象链接端口号 try { ServerSocket ss = new ServerSocket(8888); while( true) { //接收客户端信息 Socket s = ss.accept(); //调用多线程 new Thread(new SeverSocker(s)).start(); } } catch (IOException e) { e.printStackTrace(); } } }
结束语:经得住诱惑,耐得住寂寞。
java中进行socket编程实现tcpudp协议总结
1,计算机进行通信编程的基础是有ip地址加端口号的主机唯一标示、有相应的一致的协议即tcp/ip。ip地址用来区分主机,端口号用来区分计算机上不同的应用软件。2,java提供的网络功能主要有四大类 1)InetAd... 查看详情
cc2530入门教程-增强版基础技能综合实训案例(基础版)-终端源码
【CC2530入门教程-增强版】基础技能综合实训案例(基础版)-终端源码广东职业技术学院欧浩源 一、关于硬件电路 关于这个综合实训案例,具体需求详见《【CC2530入门教程-增强版】基础技能综合实训案例(... 查看详情
java使用tcpudp发送信息
Java使用TCPUDP发送信息网络通信的三要素TCP客户端服务端UDP发送端接收端网络通信的三要素IP地址端口号网络通信协议TCP客户端importjava.io.OutputStream;importjava.net.InetAddress;importjava.net.Socket;publicclassTcpClientpublicstaticvoidmain(String[]args)t 查看详情
cc2530入门教程-增强版基础技能综合实训案例(基础版)-上位机源码
【CC2530入门教程-增强版】基础技能综合实训案例(基础版)-上位机源码广东职业技术学院 欧浩源一、需求分析 按照指定参数打开串口,与测控终端建立数据传输通道,并根据应用要求实现程序逻辑,具体... 查看详情
javaweb之java基础知识增强(代码片段)
文章目录1.JUnit测试1.1不用JUnit测试1.2使用JUnit测试2.反射2.1反射的概念2.2获取Class对象的方式2.3Class对象功能2.4案例:3.注解3.1概念相关3.2作用分类3.3JDK中预定义的一些注解3.3自定义注解3.4元注解:用于描述注解的注解3.5在... 查看详情
java使用tcpudp发送信息(代码片段)
Java使用TCPUDP发送信息网络通信的三要素TCP客户端服务端UDP发送端接收端网络通信的三要素IP地址端口号网络通信协议TCP客户端importjava.io.OutputStream;importjava.net.InetAddress;importjava.net.Socket;publicclassTcpClientpublicstaticvoidmain(String[]args)t 查看详情
cc2530入门教程-增强版基础技能综合实训案例(基础版)-题目需求
【CC2530入门教程-增强版】基础技能综合实训案例(基础版)-题目需求广东职业技术学院 欧浩源一、引用 不管是简单的单片机应用,还是复杂的嵌入式系统,在我看来它们的本质结构是差不多的,都离不开“内核+外... 查看详情
java基础|java概述与基础语法案例
⭐本专栏旨在对JAVA的基础语法及知识点进行全面且详细的讲解,完成从0到1的java学习,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握JAVA编程,同时为后续的框架学习,进阶开发的代码能力打下坚实的基础。 查看详情
java学习网络编程全总结——tcpudp多线程io流socket简易在线咨询聊天室java爬虫(代码片段)
目录网络编程1.1、概述1.2、网络通信的要素1.3、IP1.4、端口(port)1.5、通信协议1.6、TCP文件上传Tomcat1.7、UDP发送消息构造方法摘要构造方法摘要咨询DatagramPacket.getData()与DatagramPacket.getLength()的误区trimstartsWith在线咨询:两个人都... 查看详情
javaweb之java基础知识增强(代码片段)
文章目录1.JUnit测试1.1不用JUnit测试1.2使用JUnit测试2.反射2.1反射的概念2.2获取Class对象的方式2.3Class对象功能2.4案例:3.注解3.1概念相关3.2作用分类3.3JDK中预定义的一些注解3.3自定义注解3.4元注解:用于描述注解的注解3.5在... 查看详情
java中进行socket编程实现tcpudp协议总结
1,计算机进行通信编程的基础是有ip地址加端口号的主机唯一标示、有相应的一致的协议即tcp/ip。ip地址用来区分主机,端口号用来区分计算机上不同的应用软件。2,java提供的网络功能主要有四大类 1)InetAd... 查看详情
java基础——udp实现dos聊天室案例(代码片段)
利用UDP网络编程UDP协议不严格区分发送端和接收端发送端//udp打包 byte[]b="固定".getBytes(); //DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport) //构造用于发送长度的分组的数据报包length指定主机上到指定的端口号。 Datagra... 查看详情
大数据入门基础七:流量统计案例--流量汇总求和!(项目三)
流量统计案例--流量汇总求和---自定义bean的序列化实现编写FlowSumMapper类编写FlowBean类 流量统计案例--mapper的实现及编程中减少垃圾的编程技巧编写FlowSumMapper类编写FlowBean类 流量统计案例--reducer的实现及编程中减少垃圾的... 查看详情
socket网络编程tcpudp演示样例
Socket网络编程: 1) OSI(了解):国际标准化组织ISO(International Orgnization for Standardization)指定了网络通信的模型:开放系统互联(OSI,Open System Interconnection),把网络通信工作分为七层:物理层(最底层)-数据链... 查看详情
java并发编程(02):线程核心机制,基础概念扩展
...些独立的任务执行,从而提升整体的效率。下面提供一个基础的演示案例。2、应用案例场景:假设有一个容器集合,需要拿出容器中的每个元素,进行加工处理,一般情况下直接遍历就好,如果数据偏大,可以根据线程数量对... 查看详情
python网络编程—(tcpudp区别)
tcp套接字和udp套接字编程区别1.流式套接字是以字节流方式传输数据,数据报套接字以数据报形式传输2.tcp套接字会有粘包,udp套接字有消息边界不会粘包3.tcp套接字保证消息的完整性,udp套接字则不能4.tcp套接字依赖listenaccept建... 查看详情
bingbingc(网络编程tcpudp)(代码片段)
上一篇目录标题字节序字节序转化TCP和UDPUDPsocket编程接口编码TCP接口检查连接是否成功代码单线程多进程服务端多线程高级IO参考字节序小端字节序:低位放在低地址大端字节序:低位放在高地址主机字节序:指的是机器本身的字节... 查看详情
bingbingc(网络编程tcpudp)(代码片段)
上一篇目录标题字节序字节序转化TCP和UDPUDPsocket编程接口编码TCP接口检查连接是否成功代码单线程多进程服务端多线程高级IO参考字节序小端字节序:低位放在低地址大端字节序:低位放在高地址主机字节序:指的是机器本身的字节... 查看详情