服务端:

package com.sux.demo;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.List; public class TestServerSocket {
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
ReceiveThread receiveThread = new ReceiveThread();
receiveThread.start();
} } class ReceiveThread extends Thread { public void run() {
try {
ServerSocket serverSocket = new ServerSocket(8888);
while (true) {
Socket socket = serverSocket.accept();
receive(socket);
socket.close();
}
} catch (Exception e) {
e.printStackTrace();
}
} public void receive(Socket socket) throws IOException, ClassNotFoundException, InterruptedException {
InputStream inputStream = socket.getInputStream();
DataInputStream dataInputStream = new DataInputStream(inputStream);
BufferedInputStream bufferedInputStream = new BufferedInputStream(dataInputStream);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); int len;
byte[] bytes = new byte[10240];
while ((len = bufferedInputStream.read(bytes)) > 0) {
byteArrayOutputStream.write(bytes, 0, len);
} System.out.println("Server端接收的数据:");
List<MyInfo> list = (List<MyInfo>) SerializeUtil.Deserialize(byteArrayOutputStream.toByteArray());
for (MyInfo myInfo : list) {
System.out.println(myInfo.toString());
}
}
}

客户端:

package com.sux.demo;

import java.io.*;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List; public class TestSocket {
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
SendThread sendThread = new SendThread();
sendThread.start();
} } class SendThread extends Thread { public void run() {
try {
Socket socket = new Socket("127.0.0.1", 8888);
send(socket);
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
} private void send(Socket socket) throws IOException, InterruptedException, ClassNotFoundException {
List<MyInfo> list = new ArrayList<MyInfo>();
for (int i = 0; i < 5; i++) {
MyInfo myInfo = new MyInfo();
myInfo.setName("数据" + i);
myInfo.setCode(i);
list.add(myInfo);
} SocketUtil.Send(socket, list);
System.out.println("数据已发送");
}
} class SocketUtil { public static synchronized void Send(Socket socket, Object data) throws IOException, ClassNotFoundException, InterruptedException {
OutputStream outputStream = socket.getOutputStream();
DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(dataOutputStream); byte[] bytes = SerializeUtil.Serialize(data); bufferedOutputStream.write(bytes);
bufferedOutputStream.flush();
}
}

Java序列化反序列化工具类:

package com.sux.demo;

import java.io.*;

public class SerializeUtil {
public static byte[] Serialize(Object object) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(object);
return byteArrayOutputStream.toByteArray();
} public static Object Deserialize(byte[] bytes) throws IOException, ClassNotFoundException {
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
return objectInputStream.readObject();
}
}

Java Socket Demo的更多相关文章

  1. java Socket实现简单在线聊天(一)

    最近的项目有一个在线网页交流的需求,由于很久以前做过的demo已经忘记的差不多了,因此便重新学习一下. 我计划的大致实现步骤分这样几大步: 1.使用awt组件和socket实现简单的单客户端向服务端持 ...

  2. Java Socket聊天室编程(一)之利用socket实现聊天之消息推送

    这篇文章主要介绍了Java Socket聊天室编程(一)之利用socket实现聊天之消息推送的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 网上已经有很多利用socket实现聊天的例子了 ...

  3. Java Socket编程基础篇

    原文地址:Java Socket编程----通信是这样炼成的 Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Sock ...

  4. Java Socket传输数据的文件系统介绍

    转自:http://developer.51cto.com/art/201003/189963.htm Java Socket传输数据在进行的时候有很多的事情需要我们不断的进行有关代码的学习.只有不断 ...

  5. 移动开发首页业界资讯移动应用平台技术专题 输入您要搜索的内容 基于Java Socket的自定义协议,实现Android与服务器的长连接(二)

    在阅读本文前需要对socket以及自定义协议有一个基本的了解,可以先查看上一篇文章<基于Java Socket的自定义协议,实现Android与服务器的长连接(一)>学习相关的基础知识点. ...

  6. 实现服务器和客户端数据交互,Java Socket有妙招

    摘要:在Java SDK中,对于Socket原生提供了支持,它分为ServerSocket和Socket. 本文分享自华为云社区<Java Socket 如何实现服务器和客户端数据交互>, ...

  7. JAVA通信系列一:Java Socket技术总结

    本文是学习java Socket整理的资料,供参考. 1       Socket通信原理 1.1     ISO七层模型 1.2     TCP/IP五层模型 应用层相当于OSI中的会话层,表示层, ...

  8. JAVA Socket 编程学习笔记(二)

    在上一篇中,使用了 java Socket+Tcp/IP  协议来实现应用程序或客户端--服务器间的实时双向通信,本篇中,将使用 UDP 协议来实现 Socket 的通信. 1. 关于UDP UDP协 ...

  9. JAVA Socket 编程学习笔记(一)

    1. Socket 通信简介及模型 Java Socket 可实现客户端--服务器间的双向实时通信.java.net包中定义的两个类socket和ServerSocket,分别用来实现双向连接的cli ...

  10. Java Socket Server的演进 (一)

    最近在看一些网络服务器的设计, 本文就从起源的角度介绍一下现代网络服务器处理并发连接的思路, 例子就用java提供的API. 1.单线程同步阻塞式服务器及操作系统API 此种是最简单的socket服务 ...

随机推荐

  1. 暴力+分治+贪心+DP:最大子序列和

    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 ...

  2. C语言输入一行字符,分别统计出其中英文字母、空格、数字与其它字符得个数。

    #include<stdio.h> void main() { char c; int letter = 0, space = 0, digit = 0, other = 0; print ...

  3. Windows之——pid为4的system进程占用80端口的解决办法

    因为Apache无法启动的原因,用netstat命令查看了一下80端口是否被占用了,如下 C:\Users\Maple>netstat -ano | findstr 0.0.0.0:80 TCP ...

  4. DFS遍历图(链式邻接表实现)

    1 #include<iostream> 2 #include<string.h> 3 #include<stdlib.h> 4 #include<stdio ...

  5. 盘点前端的那些Ajax请求:从ES5到React

    说起前端开发,Ajax请求是绕不开的技术点.然而,程序语言更新换代越来越快,Ajax请求的方式也是各有不同. 在使用ES5开发的时候,我们还在使用最原始的XMLHttpRequest对象: // cr ...

  6. MySQL 事务的基础知识

    事务的基础知识 1. 数据库事务概述 事务是数据库区别于文件系统的重要特性之一,当我们有了事务就会让数据库中的数据始终保持 一致性,同时我们还能通过事务的机制 恢复到某个时间地点的数据,这样可以保证已 ...

  7. 从零玩转SpringSecurity+JWT整合前后端分离-从零玩转springsecurityjwt整合前后端分离

    title: 从零玩转SpringSecurity+JWT整合前后端分离 date: 2021-05-06 14:56:57.699 updated: 2021-12-26 17:43:19.478 ...

  8. vulnhub - tornado - wp

    coverY: 0 tornado 信息收集 目标开放了80,22端口. 访问80网页,是默认页面: 目录枚举 用dirsearch没有什么发现,换gobuster发现了一个bluesky目录.访问如 ...

  9. gentoo安装gcc出现error: C compiler cannot create executables

    安装程序  systemd 过程中,出现了error: C compiler cannot create executables 这类错误,经过检查,由于没有配置本地编译器的结果. 输入命令如下: g ...

  10. [ACTF2020 新生赛]Exec 1

    [ACTF2020 新生赛]Exec 1 审题 发现题目有ping功能,猜测是命令执行漏洞. 知识点 linux系统命令 解题 先ping127.0.0.1,观察是否正常执行. 发现正常后执行ls / ...