这里有新鲜出炉的Java函数式编程,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
这篇文章主要为大家详细介绍了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 DataInputStream(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); // 发送给客户端
- }
- 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();
- }
- }
来源: http://www.phperz.com/article/17/1119/359942.html