记下来,方便以后查看

User类

 1 package com.xujingyang.ThreadSocket;
 2
 3 import java.io.Serializable;
 4
 5 public class User implements Serializable {
 6     private String name;
 7     private int age;
 8
 9     public String getName() {
10         return name;
11     }
12
13     public void setName(String name) {
14         this.name = name;
15     }
16
17     public int getAge() {
18         return age;
19     }
20
21     public void setAge(int age) {
22         this.age = age;
23     }
24
25     public User(String name, int age) {
26         super();
27         this.name = name;
28         this.age = age;
29     }
30
31     public User() {
32     }
33
34     @Override
35     public int hashCode() {
36         final int prime = 31;
37         int result = 1;
38         result = prime * result + age;
39         result = prime * result + ((name == null) ? 0 : name.hashCode());
40         return result;
41     }
42
43     @Override
44     public boolean equals(Object obj) {
45         if (this == obj)
46             return true;
47         if (obj == null)
48             return false;
49         if (getClass() != obj.getClass())
50             return false;
51         User other = (User) obj;
52         if (age != other.age)
53             return false;
54         if (name == null) {
55             if (other.name != null)
56                 return false;
57         } else if (!name.equals(other.name))
58             return false;
59         return true;
60     }
61
62     @Override
63     public String toString() {
64         return "User [name=" + name + ", age=" + age + "]";
65     }
66 }

View Code

客户端类

package com.xujingyang.ThreadSocket;import java.io.InputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;public class Client {public static void main(String[] args) throws Exception {Socket socket=new Socket("localhost", 9999);//监听端口
        ObjectOutputStream out=new ObjectOutputStream(socket.getOutputStream());//包装对象流
        out.writeObject(new User("小明", 21));//写入对象socket.shutdownOutput();//关闭流的占用//获取服务器发过来的消息InputStream in = socket.getInputStream();byte[] b=new byte[1024];in.read(b);System.out.println(new String(b,0,b.length));//关闭流
        in.close();out.close();socket.close();}
}

View Code

服务器类

package com.xujingyang.ThreadSocket;import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) throws Exception {ServerSocket socket=new ServerSocket(9999);//监听端口//循环监听接收各个客户端连接while (true) {Socket client = socket.accept();//开启多线程接受客户端信息ThreadServer ts=new ThreadServer(client);new Thread(ts).start();}}
}

View Code

服务器多线程接收类

package com.xujingyang.ThreadSocket;import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.net.Socket;/*** 多线程接受用户登陆,把客户端连接对象传入作为成员变量* @author 徐景洋*/
public class ThreadServer implements Runnable {private Socket client;public ThreadServer(Socket client) {this.client=client;}@Overridepublic void run() {try {//包装对象接收流ObjectInputStream in=new ObjectInputStream(client.getInputStream());User user = (User) in.readObject();//读取对象//比较是否符合标准.符合回答成功,否则失败OutputStream out = client.getOutputStream();if((new User("小明",21)).equals(user)){out.write("登陆成功".getBytes());System.out.println(user);}else{out.write("登陆失败".getBytes());}client.shutdownOutput();out.close();in.close();client.close();} catch (IOException | ClassNotFoundException e) {e.printStackTrace();}}}

View Code

转载于:https://www.cnblogs.com/xujingyang/p/6591761.html

socket多线程方式案例相关推荐

  1. Java两种多线程方式对比总结 模拟铁路售票案例

    继承Thread类创建多线程 在Thread类中,提供了一个start()方法,会启动一个新线程并自动调用run()方法 假设售票厅有五个窗口可发售200张票.200张票可以看作是共享的资源,五个窗口 ...

  2. java基础-多线程应用案例展示

    java基础-多线程应用案例展示 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.两只熊,100只蜜蜂,蜜蜂每次生产的蜂蜜量是1,罐子的容量是30,熊在罐子的蜂蜜量达到20的时候 ...

  3. 从入门到实战,Netty多线程篇案例集锦

    从入门到实战,Netty多线程篇案例集锦 原创 2015-09-10 李林峰 InfoQ Netty案例集锦系列文章介绍 1|Netty的特点 Netty入门比较简单,主要原因有如下几点: Netty ...

  4. 网络IO管理-简单一问一答、多线程方式

    思考 1. 那网络中进程之间如何通信,浏览器的进程怎么与web服务器通信的? 2. 什么时候用一请求一线程的方式? 3. 什么时候用select/poll? 4. 什么时候用epoll? 准备工作 下 ...

  5. 线程控制总结及多线程经典案例

    线程终止 Linux下有两种方式可以使线程终止: 通过return 从线程函数返回 通过调用函数pthread_exit()使线程退出 #include<pthread.h> void p ...

  6. socket多线程编程

    socket多线程编程实现并发服务器 一.多线程简介 1.什么是线程? 线程在操作系统原理中是这样描述的:线程是进程的一条执行路径.操作系统为每道进程的运行分配'处理器'与'内存'资源,但是每次都这样 ...

  7. HTML前端常见攻击方式案例讲解

    相信很多从事前端技术岗的人员,工作中害怕的就是一个系统受到外界的攻击,在外界的攻击下很多前端技术人员在找解决方法的时候是非常费力的,这个时候就会想如果说有类似的案例和解决的方法的话就好了.所以今天小编 ...

  8. HTML5前端常见攻击方式案例讲解!

    相信很多从事前端技术岗的人员,工作中最害怕的就是一个系统受到外界的攻击,在外界的攻击下很多前端技术人员在找解决方法的时候是非常费力的,这个时候就会想如果说有类似的案例和解决的方法的话就好了.所以今天小 ...

  9. 一个多线程死锁案例,如何避免及解决死锁问题

    转载自 一个多线程死锁案例,如何避免及解决死锁问题 多线程死锁在java程序员笔试的时候时有遇见,死锁概念在之前的文章有介绍,大家应该也都明白它的概念,不清楚的去翻看历史文章吧. 下面是一个多线程死锁 ...

最新文章

  1. java多线程机制_Java的多线程机制
  2. mysql5.5.28安装详最后一个步骤时为啥一直转_mysql5.7.28下载、安装、登陆步骤详解...
  3. stm32 USART_IT_IDLE中断 一帧数据
  4. python中sys模块是什么意思_python之sys模块详解
  5. cdn.cdzk_页面“www.cdzkdc.com”HTTP状态检测结果- 站长工具
  6. CCF NOI1080 统计字符
  7. 一句python,一句R︱列表、元组、字典、数据类型、自定义模块导入(格式、去重)
  8. C++实现大顶堆(插入,删除)
  9. [置顶] 从工作流引擎设计来看人精神活动的一些问题
  10. java 算法之快速排序
  11. 编程C语言集装箱体积,《我的第①本c语言编程书:C语言从入门到精通》国家863中部软件孵化器【pdf】...
  12. 神雕侠侣服务器维修,《神雕侠侣》2019年6月13日更新维护新服开启公告
  13. 20个数据可视化工具点评
  14. Pytorch ——基础指北_零 [神经元和激活函数介绍]
  15. 杭州电子科技大学计算机学硕复试,2019杭州电子科技大学计算机软件考研复试手册.docx...
  16. java faker_Java 生成测试字符串的库:Java Faker
  17. 加强化工企业危化品管理的几点建议
  18. 富士康java面试_富士康Java开发面试题目
  19. 使用oracle函数 LISTAGG 函数报错。ORA-00923: 未找到要求的 FROM 关键字
  20. cmd 下删除mysql 服务命令

热门文章

  1. Apache(4)——配置文件里的各参数(2)
  2. hadoop(4)——用python代码结合hadoop完成一个小项目
  3. 贪心/动态规划 - 买卖股票的最佳时机含手续费
  4. matlab下三维dla模型模拟,Matlab下三维DLA模型模拟
  5. C++二维数组按行遍历和按列遍历的区别
  6. MySQL探秘(六):InnoDB一致性非锁定读(隔离性)
  7. RuntimeError 之 : CUDA error: device-side assert triggered
  8. puts函数,C语言puts函数用法详解
  9. oracle指令df,怎么使用df命令查看Linux磁盘空间?
  10. 综合布线机房服务器维护,信息机房的综合布线系统维护