热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

滴水穿石13网络编程

1UPD协议发送和接收1.1基础版packaged13;importjava.net.DatagramPacket;importjava.net.DatagramSocket;

1 UPD协议发送和接收

1.1 基础版

package d13;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/** 创建stock对象* 打包数据* 发送数据* 释放数据* */
public class UDP_Send {public static void main(String[] args) throws Exception {//01 创建对象DatagramSocket ds = new DatagramSocket();//02 打包数据 DatagramPacket(byte[] buf, int length, InetAddress address, int port) byte [] contentStr = "Hello Word !!".getBytes();int lengthInt = contentStr.length;InetAddress ip = InetAddress.getByName("192.168.2.117");int portInt = 10086;DatagramPacket dp = new DatagramPacket(contentStr,lengthInt,ip,portInt);//03 发送数据
ds.send(dp);//04 释放资源
ds.close();}}

UDP_Send

package d13;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/** 创建stock对象* 创建数据包对象* 接收数据* 解析数据* 释放数据* */
public class UDP_Receive {public static void main(String[] args) throws Exception {//01 创建对象int portInt = 10086;DatagramSocket ds = new DatagramSocket(portInt);//02 打包数据 DatagramPacket(byte[] buf, int length) byte[] buf = new byte[1024];int lengthInt = 1024; DatagramPacket dp = new DatagramPacket(buf,lengthInt);//03 发送数据
ds.receive(dp);//04 解析数据String ip = dp.getAddress().getHostAddress();byte[] contentByte = dp.getData();int len = dp.getLength();String strContent = new String(contentByte,0,len); System.out.println(ip+": "+strContent);//05 释放资源
ds.close();}}

UDP_Receive

1.2 改进版,键盘录入

package d13;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/** 创建stock对象* 打包数据* 发送数据* 释放数据* */
public class UDP_Send {public static void main(String[] args) throws Exception {//01 创建对象DatagramSocket ds = new DatagramSocket();//02 打包数据 DatagramPacket(byte[] buf, int length, InetAddress address, int port) BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String line = null;while ((line = br.readLine()) != null) {if ("886".equals(line)) {break;} byte [] contentStr =line.getBytes();int lengthInt = contentStr.length;InetAddress ip = InetAddress.getByName("192.168.2.117");int portInt = 10086;DatagramPacket dp = new DatagramPacket(contentStr,lengthInt,ip,portInt);//03 发送数据
ds.send(dp);}//04 释放资源
ds.close();}}

UDP_Send2.0

 

2 TCP协议发送和接收数据

2.1 基础版

package d13;import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
/*TCP协议发送数据:* A:创建发送端的Stock* B:获取输出流,写数据* C:释放资源* */
public class TCP_Client {public static void main(String[] args) throws Exception {// A:创建发送端的StockSocket s = new Socket("192.168.2.117",10087);//B:获取输出流,写数据OutputStream os = s.getOutputStream();os.write("Hello Word !!".getBytes());//释放资源
s.close();}}

TCP_Client

package d13;import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**创建服务端的Socket对象*监听客户端连接,返回一个Socket对象*获取输入流 并显示在控制台*释放资源* */
public class TCP_Server {public static void main(String[] args) throws Exception {//创建服务端的Socket对象ServerSocket s = new ServerSocket(10087);//监听客户端连接,返回一个Socket对象Socket ss = s.accept();//获取输入流 并显示在控制台InputStream is = ss.getInputStream();byte [] bys = new byte[1024];int len = is.read(bys);String str = new String(bys,0,len);String ip = ss.getInetAddress().getHostAddress();System.out.println(ip+": "+str);//释放资源
ss.close();}}

TCP_Server

2.2 服务器端收到消息后反馈给客户端

package d13;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
/*TCP协议发送数据:* A:创建发送端的Stock* B:获取输出流,写数据* C:释放资源* */
public class TCP_Client {public static void main(String[] args) throws Exception {// A:创建发送端的StockSocket s = new Socket("192.168.2.117",10087);//B:获取输出流,写数据OutputStream os = s.getOutputStream();os.write("Hello Word !!".getBytes());//C 接收服务器端发送来的数据InputStream is = s.getInputStream();byte [] by = new byte[1024];int len = is.read(by);String ms=new String(by,0,len);System.out.println(ms);//释放资源
s.close();}}

TCP_Client

package d13;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**创建服务端的Socket对象*监听客户端连接,返回一个Socket对象*获取输入流 并显示在控制台*释放资源* */
public class TCP_Server {public static void main(String[] args) throws Exception {//创建服务端的Socket对象ServerSocket s = new ServerSocket(10087);//监听客户端连接,返回一个Socket对象Socket ss = s.accept();//获取输入流 并显示在控制台InputStream is = ss.getInputStream();byte [] bys = new byte[1024];int len = is.read(bys);String str = new String(bys,0,len);String ip = ss.getInetAddress().getHostAddress();System.out.println(ip+": "+str);//创建输出流,将消息反馈给客户端OutputStream os = ss.getOutputStream();os.write("信息已收到!!".getBytes());//释放资源
ss.close();}}

TCP_Server

2.3 键盘录入+高效流

package d13;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
/*TCP协议发送数据:* A:创建发送端的Stock* B:获取输出流,写数据* C:释放资源* */
public class TCP_Client {public static void main(String[] args) throws Exception {// A:创建发送端的StockSocket s = new Socket("192.168.2.117",10087);//B:获取输出流,写数据OutputStream os = s.getOutputStream();//键盘录入数据BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//把通道内的流给包装一下BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));String line =null;while ((line=br.readLine())!=null) {if ("886".equals(line)) {break;}bw.write(line);bw.newLine();bw.flush();}//释放资源
s.close();}}

TCP_Client

package d13;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**创建服务端的Socket对象*监听客户端连接,返回一个Socket对象*获取输入流 并显示在控制台*释放资源* */
public class TCP_Server {public static void main(String[] args) throws Exception {//创建服务端的Socket对象ServerSocket ss = new ServerSocket(10087);//监听客户端连接,返回一个Socket对象Socket s = ss.accept();//获取输入流 并显示在控制台BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));String line = null;while ((line=br.readLine())!=null) {//String ip = ss.getInetAddress().getHostAddress();System.out.println(line);}//释放资源
s.close();}}

TCP_Server

 2.4 键盘录入+输出到文本文件

package d13;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
/** 客户端键盘录入,服务器输出到文本文件*/
public class TCP_Client2 {public static void main(String[] args) throws IOException {//创建客户端Socket对象Socket s = new Socket("192.168.2.117",23466);//键盘录入BufferedReader br = new BufferedReader (new InputStreamReader(System.in));//封装通道内的数据BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));String line =null;while ((line=br.readLine())!=null) {if ("over".equals(line)) {break;}bw.write(line);bw.newLine();bw.flush();}s.close();}
}

TCP_Client2

package d13;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
/** 客户端键盘录入,服务器输出到文本文件*/
public class TCP_Server2 {public static void main(String[] args) throws IOException {//创建服务器Socket对象ServerSocket ss = new ServerSocket(23466);//监听客户端创建Socket s = ss.accept();//从通道中来到文件中去BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));//封装文本文件BufferedWriter bw = new BufferedWriter (new FileWriter("b.txt"));String line = null;while ((line=br.readLine())!=null) {bw.write(line);bw.newLine();bw.flush();}bw.close();}
}

TCP_Server2

2.5 文本文件录入+控制台输出

package d13;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
/** 读取文本文件,输出到控制台*/
public class TCP_Client3 {public static void main(String[] args) throws IOException {//创建Socket对象Socket s = new Socket("192.168.2.117",10087);//封装文本文件BufferedReader br = new BufferedReader(new FileReader("b.txt"));//封装通道内的流BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));String line = null;while ((line = br.readLine())!=null) {bw.write(line);bw.newLine();bw.flush(); }br.close();s.close();}
}

TCP_Client3

package d13;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class TCP_Server3 {public static void main(String[] args) throws IOException {//创建服务器对象ServerSocket ss = new ServerSocket(10087);//监听客户端Socket s = ss.accept();//从通道中来BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));//到控制台String line = null;while ((line=br.readLine())!=null) {System.out.println(line);}s.close();}}

TCP_Server3

2.6 文本文件录入+文本文件输出

package d13;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class TCP_Client4 {public static void main(String[] args) throws IOException {// 创建Socket对象Socket s = new Socket("192.168.2.117", 10088);// 创建读取流BufferedReader br = new BufferedReader(new FileReader("b.txt"));// 创建文件输出流BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));String line = null;while ((line = br.readLine()) != null) {bw.write(line);bw.newLine();bw.flush();}//Socket通知服务器,已经结束了bw.write("over");s.shutdownOutput();// 接收反馈BufferedReader brclient = new BufferedReader(new InputStreamReader(s.getInputStream()));String msg = brclient.readLine();System.out.println(msg);// 释放资源
br.close();s.close();}}

TCP_Client4

package d13;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TCP_Server4 {public static void main(String[] args) throws IOException {//创建服务器对象ServerSocket ss = new ServerSocket(10088);//创建监听Socket s = ss.accept();//从通道中来BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));//到文件中BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));String line = null;while ((line=br.readLine())!=null) {bw.write(line);bw.newLine();bw.flush();}//发出成功消息BufferedWriter bwServer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));bwServer.write("文件上传成功");bwServer.newLine();bwServer.flush();//bwServer.close();//释放资源
bw.close();s.close();}
}

TCP_Server4

 2.7 图片文件录入+图片文件输出

package d13;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
//上传图片,并保存
public class TCP_Client5 {public static void main(String[] args) throws IOException {//创建Socket对象Socket s = new Socket("192.168.2.117", 10090);//读取图片图片BufferedInputStream bi = new BufferedInputStream(new FileInputStream("a.png"));byte [] by = new byte[1024];//向通道中写数据BufferedOutputStream bo = new BufferedOutputStream(s.getOutputStream());int len =0;while ((len=bi.read(by))>0) {bo.write(by,0,len); bo.flush();}//通知服务器传输结束
s.shutdownOutput();//结束服务器传来的反馈InputStream biServer = s.getInputStream();len= biServer.read(by);String msg =new String(by,0,len);System.out.println(msg);s.close();}
}

TCP_Client5

package d13;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TCP_Server5 {public static void main(String[] args) throws IOException {// 创建服务端SocketServerSocket ss = new ServerSocket(10090);// 监听客户端Socket s = ss.accept();// 从通道中来BufferedInputStream bi = new BufferedInputStream(s.getInputStream());// 到文件中去byte [] by = new byte[1024];BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream("b.png"));int len =0;while ((len=bi.read(by))!=-1) {bo.write(by,0,len);}//给客户端个反馈OutputStream bs = s.getOutputStream();bs.write("图片上传成功!".getBytes()); bo.close();s.close();}
}

TCP_Server5

 3 一个服务器+多个客户端(多线程)

package d13;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TCP_Server5 {public static void main(String[] args) throws IOException {// 创建服务端SocketServerSocket ss = new ServerSocket(10090);while (true) {// 监听客户端Socket s = ss.accept();new Thread(new UserThread(s)).start(); }}
}

TCP_Server5

package d13;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.Socket;
public class UserThread implements Runnable {private Socket s;public UserThread(Socket s) {this.s=s;}@Overridepublic void run() {// TODO Auto-generated method stubtry {// 从通道中来BufferedInputStream bi = new BufferedInputStream(s.getInputStream());// 到文件中去byte [] by = new byte[1024];String newName =System.currentTimeMillis()+".png";BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(newName));int len =0;while ((len=bi.read(by))!=-1) {bo.write(by,0,len);}//给客户端个反馈OutputStream bs = s.getOutputStream();bs.write("图片上传成功!".getBytes()); bo.close();s.close();} catch (Exception e) {// TODO: handle exception
}}}

UserThread

package d13;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
//上传图片,并保存
public class TCP_Client5 {public static void main(String[] args) throws IOException {//创建Socket对象Socket s = new Socket("192.168.2.117", 10090);//读取图片图片BufferedInputStream bi = new BufferedInputStream(new FileInputStream("a.png"));byte [] by = new byte[1024];//向通道中写数据BufferedOutputStream bo = new BufferedOutputStream(s.getOutputStream());int len =0;while ((len=bi.read(by))>0) {bo.write(by,0,len); bo.flush();}//通知服务器传输结束
s.shutdownOutput();//结束服务器传来的反馈InputStream biServer = s.getInputStream();len= biServer.read(by);String msg =new String(by,0,len);System.out.println(msg);s.close();}
}

TCP_Client5

 

转:https://www.cnblogs.com/YK2012/p/8732748.html



推荐阅读
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 面向对象之3:封装的总结及实现方法
    本文总结了面向对象中封装的概念和好处,以及在Java中如何实现封装。封装是将过程和数据用一个外壳隐藏起来,只能通过提供的接口进行访问。适当的封装可以提高程序的理解性和维护性,增强程序的安全性。在Java中,封装可以通过将属性私有化并使用权限修饰符来实现,同时可以通过方法来访问属性并加入限制条件。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
author-avatar
mobiledu2502902037
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有