Java socket字节流传输示例解析

网友投稿 259 2023-07-06


Java socket字节流传输示例解析

本文为大家分享了java socket字节流传输示例,供大家参考,具体内容如下

服务端server端:

package com.yuan.socket;

import java.io.*;

import java.net.ServerSocket;

import java.net.Socket;

/**

* Created by YUAN on 2016-09-17.

*/

public class TalkServer4Byte {

private ServerSocket server;

private int port = 5020;

public TalkServer4Byte() {

try {

server = new ServerSocket(port);

} catch (IOException e) {

}

}

public void talk() {

System.out.println("监控端口:" + port);

Socket socket = null;

while (true) {

try {

// 阻塞等待,每接收到一个请求就创建一个新的连接实例

socket = server.accept();

System.out.println("连接客户端地址:" + socket.getRemoteSocketAddress());

// 装饰流BufferedReader封装输入流(接收客户端的流)

BufferedInputStream bis = new BufferedInputStream(

socket.getInputStream());

DataInputStream dis = new DataInputStreayjqHtDiDjam(bis);

byte[] bytes = new byte[1]; // 一次读取一个byte

String ret = "";

while (dis.read(bytes) != -1) {

ret += bytesToHexString(bytes) + " ";

if (dis.available() == 0) { //一个请求

doSomething(ret);

}

}

} catch (IOException e) {

System.out.println(e.getMessage());

} finally {

try {

socket.close();

} catch (IOException e) {

System.out.println(e.getMessage());

}

}

}

}

public static void doSomething(String ret) {

System.out.println(ret);

}

public static String bytesToHexString(byte[] src) {

StringBuilder stringBuilder = new StringBuilder("");

if (src == null || src.length <= 0) {

return null;

}

for (int i = 0; i < src.length; i++) {

int v = src[i] & 0xFF;

String hv = Integer.toHexString(v);

if (hv.length() < 2) {

stringBuilder.append(0);

}

stringBuilder.append(hv);

}

return stringBuilder.toString();

}

public static String BytesHexString(byte[] b) {

String ret = "";

for (int i = 0; i < b.length; i++) {

String hex = Integer.toHexString(b[i] & 0xFF);

if (hex.length() == 1) {

hex = '0' + hex;

}

ret += hex.toUpperCase();

}

return ret;

}

public static void main(String[] args) {

TalkServer4Byte server = new TalkServer4Byte();

server.talk();

}

}

客户端client代码:

package com.yuan.socket;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.InetSocketAddress;

import java.net.Socket;

import java.net.SocketAddress;

/**

* Created by YUAN on 2016-09-17.

*/

public class TalkClient4Byte {

private Socket socket;

private SocketAddress address;

public TalkClient4Byte() {

try {

socket = new Socket();

address = new InetSocketAddress("127.0.0.1", 5020);

socket.connect(address, 1000);

} catch (IOException e) {

e.printStackTrace();

}

}

public void talk() {

try {

//使用DataInputStream封装输入流

InputStream os = new DataInputStream(System.in);

byte [] b = new byte[1];

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

while (-1 != os.read(b)) {

dos.write(b); // 发送给客户端

}

yjqHtDiDja dos.flush();

dos.close();

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

socket.close();

} catch (IOException e) {

}

}

}

public static void main(String[] args) {

TalkClient4Byte client = new TalkClient4Byte();

client.talk();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:javaweb用户注销后点击浏览器返回刷新页面重复登录问题的解决方法
下一篇:java & Android 格式化字符串详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~