首页 > 编程语言 >Java学习之路--网络编程相关02

Java学习之路--网络编程相关02

时间:2023-09-20 16:25:31浏览次数:28  
标签:02 Java socket -- new import close java null

package com.kuang.lesson02;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

//客户端 2023.3.4 TCP 建立客户端和服务端 实现信息发送功能
public class TcpClientDemo01 {
public static void main(String[] args) {

Socket socket = null;
OutputStream os = null;

//1.要知道服务器的地址,端口号
try {
InetAddress serverIP = InetAddress.getByName("127.0.0.1");
int port = 9999;
//2.创建一个socket连
socket = new Socket(serverIP,port);
//3.发送消息 IO流
os = socket.getOutputStream();
os.write("你好,欢迎学习Java".getBytes());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (os != null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

//
package com.kuang.lesson02;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

//2023.3.5 客户端 TCP 实现文件读取和输出 客户端给服务端发文件,服务端收到并做出反馈断开连接
public class TcpClientDemo02 {
public static void main(String[] args) throws Exception{
//1.创建一个Socket连接
Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9000);
//2.创建一个输出流
OutputStream os = socket.getOutputStream();
//3.读取文件
FileInputStream fis = new FileInputStream(new File("D:\\Java SE\\基础语法\\src\\com\\kuang\\cat.jpg"));
//4.写出文件
byte[] buffer = new byte[1024];
int len;
while ((len=fis.read(buffer))!= -1){
os.write(buffer,0,len);
}
//通知服务器我已经结束了
socket.shutdownOutput();//我已经传输完了
//确定服务器接收完毕,才能够断开连接
InputStream inputStream = socket.getInputStream();
//String byte[]
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

byte[] buffer2 = new byte[2014];
int len2;
while ((len2 = inputStream.read(buffer2)) != -1){
byteArrayOutputStream.write(buffer2,0,len2);
}

System.out.println(byteArrayOutputStream.toString());

//5.关闭资源
fis.close();
os.close();
socket.close();
}
}

//
package com.kuang.lesson02;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

//服务端 3.4
public class TcpServerDemo01 {
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket = null;
InputStream is = null;
ByteArrayOutputStream baos = null;
try {
//1.我得有一个地址
serverSocket = new ServerSocket(9999);
//2.等待客户端连接过来
socket = serverSocket.accept();
//3.读取客户端的信息
is = socket.getInputStream();
//管道流
baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) != -1){
baos.write(buffer,0,len);
}
System.out.println(baos.toString());

} catch (IOException e) {
e.printStackTrace();
}finally {
//关闭资源
if (baos != null){
try {
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (is != null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (serverSocket != null){
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
//
package com.kuang.lesson02;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

//3.5服务端
public class TcpServerDemo02 {
public static void main(String[] args) throws Exception{
//1.创建服务
ServerSocket serverSocket = new ServerSocket(9000);
//2.监听客户端的连接
Socket socket = serverSocket.accept();//阻塞式监听,会一直等待客户端连接
//3.获取输入流
InputStream is = socket.getInputStream();
//4.文件输出
FileOutputStream fos = new FileOutputStream(new File("D:\\Java SE\\基础语法\\src\\com\\kuang\\receive.jpg"));
byte[] buffer = new byte[1024];
int len;
while ((len=is.read(buffer)) != -1){
fos.write(buffer,0,len);
}
//通知客户端我接受完毕了
OutputStream outputStream = socket.getOutputStream();
outputStream.write("客户端,我接收完毕,可以断开连接了".getBytes());
//关闭资源
fos.close();
is.close();
socket.close();
serverSocket.close();
}
}

标签:02,Java,socket,--,new,import,close,java,null
From: https://www.cnblogs.com/CaiDingChao/p/17717655.html

相关文章

  • Python用于解析和修改文本数据-pyparsing模块教程
    Python库解析地址PyParsing人们普遍认为,Python编程语言的pyparsing模块是对文本数据进行操作的一个宝贵工具。用于解析和修改文本数据的pyparsing包,简化了对地址的操作。这是因为该模块可以转换和帮助解析地址。在这篇文章中,我们将讨论PyParsing模块在处理解析以及修改时的......
  • SQL注入
    sql注入就是在数据交互中,前端数据传到后台时没有做严格的判断,导致传进来的数据被拼接到sql语句中,被当作sql语句的一部分进行执行,从而导致数据泄露,丢失甚至服务器瘫痪。如果代码中没有过滤或者过滤不严谨是会出现漏洞的。   判断注入and 1=1 正常and 1=2 错误可......
  • Python中最长的递增序列
    如何使用Python中的N平方法和二进制搜索法计算一个数组中最长的递增子序列。使用N平方法计算最长的递增子序列在Python社区中,有一个著名的问题是关于最长递增子序列的,在不同的面试中也会被问到。这是一个Leetcode,问题说:给定一个未排序的整数数组,找出该数组的最长递增子序列或子......
  • kubeadm&dashboard 部署脚本
    kubeadm部署脚本一、服务器规划4C8G3台IP地址功能192.168.10.5Master192.168.10.6Node01192.168.10.7Node02二、安装k8S准备工作关闭防火墙systemctlstopfirewalld&&systemctldisablefirewalld关闭seliunxsetenforce0&&sed-i's/^SELIN......
  • node express 相关配置
     hbuilderX直接安装/或者通过命令行``npminit``安装###安装express``npminstallexpress--save``在app.js中引入express```js//引入express框架,并使用expressconstexpress=require('express')constapp=express()```express官网https://www.expressjs......
  • Python模拟函数
    unittest.mock或Mock函数是一个用于Python测试的库,它允许你用mock对象替换被测系统的部件,并对这些部件的使用情况作出断言。unittest.mock给出了一个核心的Mock类,消除了在你的测试套件中创建大量存根的必要性。在执行一个过程后,你可以断言哪些方法或属性被使用,以及它们被调......
  • PHP如何上传超大文件
    前言最近在开发一个视频播放网站,用的是PHP技术。视频播放网站用户上传的都是视频资料,小的有几十M,大的都超过G了,对于这种超大文件的上传,我们不能用常规的上传方式,必须对大文件进行分块上传,否则一方面会造成服务器内存爆满,另一方如果上传的文件太大也很容造成上传超时的情况发生。......
  • Java学习之路--网络编程相关03
    packagecom.kuang.lesson03;importjava.net.DatagramPacket;importjava.net.DatagramSocket;importjava.net.InetAddress;//2023.3.6UDP通信方式实现发送消息----不需要连接服务器publicclassUdpClientDemo01{publicstaticvoidmain(String[]args)throwsExcepti......
  • 230920 创记录的亏损 泉阳泉
    今天-2.5,出了泉阳泉,亏损12%左右.模式外的交易,以及凭借主观感觉做交易,导致出现了如此大的亏损.1.模式外你磨刀霍霍,准备低吸,但是,从常山到一众,你选择了看起来跌的很快的泉阳泉.一个主要的观点,就是你前几天认为,它股性好,可能是大跌洗盘,你认为它会复制另外一个个股的走......
  • mysql 行级锁应用
    当在MySQL中需要实现从scheduler_task表中选择一个status='todo'的任务,并将其状态设置为"ongoing"和worker_id设置为"1",同时确保线程安全并返回该任务的信息时,我们需要使用行级锁来实现。介绍在多线程环境下,当多个线程同时执行数据库操作时,可能会出现并发冲突的情况。为了确保线......