「java发送数据包」java获取网络数据包

博主:adminadmin 2022-12-28 12:21:09 64

本篇文章给大家谈谈java发送数据包,以及java获取网络数据包对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java怎么自定义一个数据包并把它发送出去?

客户端代码

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

import java.io.DataOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.net.InetSocketAddress;

import java.net.Socket;

public class Client {

public static void main(String[] args) {

int length = 0;

byte[] sendBytes = null;

Socket socket = null;

DataOutputStream dos = null;

FileInputStream fis = null;

try {

try {

socket = new Socket();

socket.connect(new InetSocketAddress("192.168.0.104", 3000),

10 * 1000);

dos = new DataOutputStream(socket.getOutputStream());

File file = new File("Moon.zip");

fis = new FileInputStream(file);

sendBytes = new byte[10240];

while ((length = fis.read(sendBytes, 0, sendBytes.length)) 0) {

dos.write(sendBytes, 0, length);

dos.flush();

}

} finally {

if (dos != null)

dos.close();

if (fis != null)

fis.close();

if (socket != null)

socket.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

//////////////////////////////////////////////////////////

服务器代

import java.net.*;

import java.io.*;

public class Server implements Runnable {

public static void main(String[] args) {

try {

final ServerSocket server = new ServerSocket(3000);

Thread th = new Thread(new Runnable() {

public void run() {

while (true) {

try {

System.out.println("开始监听...");

Socket socket = server.accept();

System.out.println("有链接");

receiveFile(socket);

} catch (Exception e) {

}

}

}

});

th.run(); //启动线程运行

} catch (Exception e) {

e.printStackTrace();

}

}

public void run() {

}

public static void receiveFile(Socket socket) {

byte[] inputByte = null;

int length = 0;

DataInputStream dis = null;

FileOutputStream fos = null;

try {

try {

dis = new DataInputStream(socket.getInputStream());

fos = new FileOutputStream(new File("receive.MV"));

inputByte = new byte[1024];

System.out.println("开始接收数据...");

while ((length = dis.read(inputByte, 0, inputByte.length)) 0) {

System.out.println(length);

fos.write(inputByte, 0, length);

fos.flush();

}

System.out.println("完成接收");

} finally {

if (fos != null)

fos.close();

if (dis != null)

dis.close();

if (socket != null)

socket.close();

}

} catch (Exception e) {

}

}

}

java 服务器怎样给客户端传输数据

java需要利用scoket实现网络通信,在通信时可以利用是从客厅、获取输入输出流达到传输数据效果

java中发送数据包的函数有几个啊

数据包发送有很多种,但是最底层都是inputstream 和outputstream ; 上层都是封装了这两个类,上层根据不同的应用做了不同的封装

java中如何实现从客户端发送文件到服务器端?

服务器端源码:\x0d\x0aimport java.io.BufferedReader;\x0d\x0aimport java.io.File;\x0d\x0aimport java.io.FileNotFoundException;\x0d\x0aimport java.io.FileOutputStream;\x0d\x0aimport java.io.IOException;\x0d\x0aimport java.io.InputStream;\x0d\x0aimport java.io.InputStreamReader;\x0d\x0aimport java.net.ServerSocket;\x0d\x0aimport java.net.Socket;\x0d\x0a\x0d\x0a/**\x0d\x0a *\x0d\x0a * 文件名:ServerReceive.java\x0d\x0a * 实现功能:作为服务器接收客户端发送的文件\x0d\x0a *\x0d\x0a * 具体实现过程:\x0d\x0a * 1、建立SocketServer,等待客户端的连接\x0d\x0a * 2、当有客户端连接的时候,按照双方的约定,这时要读取一行数据\x0d\x0a * 其中保存客户端要发送的文件名和文件大小信息\x0d\x0a * 3、根据文件名在本地创建文件,并建立好流通信\x0d\x0a * 4、循环接收数据包,将数据包写入文件\x0d\x0a * 5、当接收数据的长度等于提前文件发过来的文件长度,即表示文件接收完毕,关闭文件\x0d\x0a * 6、文件接收工作结束\x0d\x0a\x0d\x0apublic class ServerReceive {\x0d\x0a \x0d\x0a public static void main(String[] args) {\x0d\x0a \x0d\x0a /**与服务器建立连接的通信句柄*/\x0d\x0a ServerSocket ss = null;\x0d\x0a Socket s = null;\x0d\x0a \x0d\x0a /**定义用于在接收后在本地创建的文件对象和文件输出流对象*/\x0d\x0a File file = null;\x0d\x0a FileOutputStream fos = null;\x0d\x0a \x0d\x0a /**定义输入流,使用socket的inputStream对数据包进行输入*/\x0d\x0a InputStream is = null;\x0d\x0a \x0d\x0a /**定义byte数组来作为数据包的存储数据包*/\x0d\x0a byte[] buffer = new byte[4096 * 5];\x0d\x0a \x0d\x0a /**用来接收文件发送请求的字符串*/\x0d\x0a String comm = null;\x0d\x0a\x0d\x0a/**建立socekt通信,等待服务器进行连接*/\x0d\x0a try {\x0d\x0a ss = new ServerSocket(4004);\x0d\x0a s = ss.accept();\x0d\x0a } catch (IOException e) {\x0d\x0a e.printStackTrace();\x0d\x0a }\x0d\x0a\x0d\x0a/**读取一行客户端发送过来的约定信息*/\x0d\x0a try {\x0d\x0a InputStreamReader isr = new InputStreamReader(s.getInputStream());\x0d\x0a BufferedReader br = new BufferedReader(isr);\x0d\x0a comm = br.readLine();\x0d\x0a } catch (IOException e) {\x0d\x0a System.out.println("服务器与客户端断开连接");\x0d\x0a }\x0d\x0a \x0d\x0a /**开始解析客户端发送过来的请求命令*/\x0d\x0a int index = comm.indexOf("/#");\x0d\x0a \x0d\x0a /**判断协议是否为发送文件的协议*/\x0d\x0a String xieyi = comm.substring(0, index);\x0d\x0a if(!xieyi.equals("111")){\x0d\x0a System.out.println("服务器收到的协议码不正确");\x0d\x0a return;\x0d\x0a }\x0d\x0a \x0d\x0a /**解析出文件的名字和大小*/\x0d\x0a comm = comm.substring(index + 2);\x0d\x0a index = comm.indexOf("/#");\x0d\x0a String filename = comm.substring(0, index).trim();\x0d\x0a String filesize = comm.substring(index + 2).trim();\x0d\x0a\x0d\x0a/**创建空文件,用来进行接收文件*/\x0d\x0a file = new File(filename);\x0d\x0a if(!file.exists()){\x0d\x0a try {\x0d\x0a file.createNewFile();\x0d\x0a } catch (IOException e) {\x0d\x0a System.out.println("服务器端创建文件失败");\x0d\x0a }\x0d\x0a }else{\x0d\x0a /**在此也可以询问是否覆盖*/\x0d\x0a System.out.println("本路径已存在相同文件,进行覆盖");\x0d\x0a }\x0d\x0a \x0d\x0a /**【以上就是客户端代码中写到的服务器的准备部分】*/\x0d\x0a\x0d\x0a/**\x0d\x0a * 服务器接收文件的关键代码*/\x0d\x0a try {\x0d\x0a /**将文件包装到文件输出流对象中*/\x0d\x0a fos = new FileOutputStream(file);\x0d\x0a long file_size = Long.parseLong(filesize);\x0d\x0a is = s.getInputStream();\x0d\x0a /**size为每次接收数据包的长度*/\x0d\x0a int size = 0;\x0d\x0a /**count用来记录已接收到文件的长度*/\x0d\x0a long count = 0;\x0d\x0a \x0d\x0a /**使用while循环接收数据包*/\x0d\x0a while(count

回答于 2022-12-11

用java如何编写发送其它各种协议的 数据包

自行在服务端与客户端定义协议例如:

报头定义:

名称 大小(字节)

标识符 4

版本 4

协议类型 4

指令类型 4

数据长度 4

会话ID 4

包体定义:

报头 28

系统数据库服务名 32

系统数据库ip 4

系统数据库端口 4

系统数据库用户名 32

系统数据库密码 32

或者使用webserver 提供外部接口传递数据

紧急求助,java如何通过socket发送16进制的数据包

getOutputStream(),从连接获取输入流对象。

这个对象可以和BufferedOutputStream,OutputStreamWriter等配合使用;

建立BufferedOutputStream对象

BufferedOutputStream br=new BufferedOutputStream(socket.getOutputStream());

调用BufferedOutputStream对象的,write向流中写入数据。

关于java发送数据包和java获取网络数据包的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。