//服务器端代码

public class Service { //服务器

public static void main(String[] args) {
ServerSocket serverSocket=null;
Socket socket=null;
try {
//创建一个超市
serverSocket=new ServerSocket(8800);
while(true){
//超市开门 等待顾客上门购物 怎么保证超市是24消失营业的??
socket = serverSocket.accept();
//使用多线程来实现多个顾客能同时购物 同时结账
ServiceThread thread=new ServiceThread(socket);
thread.start();
}
} catch (IOException e) {
e.printStackTrace();
}


}


}

服务器端代码

//服务器端需要的线程类

public class ServiceThread extends Thread {

//没启动一个线程 就相当于有一个顾客 进入 超市
Socket socket=null;

public ServiceThread(Socket socket) {
this.socket=socket;
}

@Override
public void run() {
InputStream is=null;
OutputStream os=null;
ObjectInputStream ois=null; //反序列化
try {
//拿出钱包,推上购物车
is=socket.getInputStream();
os=socket.getOutputStream();
//反序列化 获取 顾客的信息
ois=new ObjectInputStream(is);
User user=(User) ois.readObject(); //读到进入超市的顾客信息
if (user!=null) {
System.out.println("服务器说:您的姓名是:"+user.getUserName());
}
//给顾客一个回应
os.write("欢迎您的光临".getBytes());
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally{
try {
os.close();
ois.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}

}


}


}

服务器需要的线程类

//客户端代码

public class Client1 { //第一个顾客

public static void main(String[] args) {
Socket socket=null;
InputStream is=null;
OutputStream os=null;
ObjectOutputStream oos=null;
//接收服务器的信息 读
BufferedReader br=null;


try {
//进入了我们指定的 超市购物
socket=new Socket("localhost", 8800);
is=socket.getInputStream();
os=socket.getOutputStream();
//序列化对象
oos=new ObjectOutputStream(os);
User user=new User("小黑黑1", "admin");
oos.writeObject(user);
//购物完毕 shutdownOutput 与 close
socket.shutdownOutput();

//接收到服务器给你说的 欢迎光临
br=new BufferedReader(new InputStreamReader(is));
String line=null;
while((line=br.readLine())!=null){
System.out.println("我是客户端:服务器 对我说:"+line);
}

} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
br.close();
oos.close();
os.close();
is.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}

}




}
}

客户端代码

多线程完成socket的更多相关文章

  1. Python拾忆--多线程的socket服务器

    阳光明媚的午后,想想最近要开始从写Java到写Python了,就随手打开电脑来体验一下Python与Java之间的不同吧~ 记得我还在上大二的时候,那个时候才开始学Java,最感兴趣的就是Java书最 ...

  2. C# 实现的多线程异步Socket数据包接收器框架

    转载自Csdn : http://blog.csdn.net/jubao_liang/article/details/4005438 几天前在博问中看到一个C# Socket问题,就想到笔者2004年 ...

  3. 通过编写聊天程序来熟悉python中多线程及socket的用法

    1.引言 Python中提供了丰富的开源库,方便开发者快速就搭建好自己所需要的应用程序.本文通过编写基于tcp/ip协议的通信程序来熟悉python中socket以及多线程的使用. 2.python中 ...

  4. 多线程Java Socket编程示例

    package org.merit.test.socket; import java.io.BufferedReader; import java.io.IOException; import jav ...

  5. 《Unity 3D游戏客户端基础框架》多线程异步 Socket 框架构建

    引言: 之前写过一个 demo 案例大致讲解了 Socket 通信的过程,并和自建的服务器完成连接和简单的数据通信,详细的内容可以查看 Unity3D -- Socket通信(C#).但是在实际项目应 ...

  6. 可扩展多线程异步Socket服务器框架EMTASS 2.0 (转自:http://blog.csdn.net/hulihui)

    可扩展多线程异步Socket服务器框架EMTASS 2.0 (转自:http://blog.csdn.net/hulihui) 0 前言 >>[前言].[第1节].[第2节].[第3节]. ...

  7. 并发编程~~~多线程~~~计算密集型 / IO密集型的效率, 多线程实现socket通信

    一 验证计算密集型 / IO密集型的效率 IO密集型: IO密集型: 单个进程的多线程的并发效率高. 计算密集型: 计算密集型: 多进程的并发并行效率高. 二 多线程实现socket通信 服务器端: ...

  8. 利用多线程使socket服务端可以与多个客户端同时通讯

    利用多线程使socket服务端可以与多个客户端同时通讯 server import socket 1. 符合TCP协议的手机 server = socket.socket(socket.AF_INET ...

  9. day36——死锁、递归锁、信号量、GIL、多线程实现socket通信、线程池和进程池

    day36 死锁现象与递归锁 死锁现象 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这 ...

随机推荐

  1. selenium截图对比校验方法

    /**对比图片进行校验是否成功**/package com.allin.pc;import java.awt.image.BufferedImage;import java.awt.image.Dat ...

  2. TCP重传率高的监控

    TCP重传率是对网络质量的一个体现,简单包装netstat -s的输出可以计算出TCP重传率.现成的脚本如下: #!/bin/bash export PATH='/bin:/sbin:/usr/bin ...

  3. The first DP!

    P3399 丝绸之路 题目背景 张骞于公元前138年曾历尽艰险出使过西域.加强了汉朝与西域各国的友好往来.从那以后,一队队骆驼商队在这漫长的商贸大道上行进,他们越过崇山峻岭,将中国的先进技术带向中亚. ...

  4. ProcessExplore 最新版

    http://files.cnblogs.com/files/zhangdongsheng/ProcessExplorer.zip

  5. P​D​F​二​次​开​发​_​i​S​t​y​l​e​P​D​F​表​单​域​的​填​充

    wo讲到PDF表单,我们首先需要认识Adobe定义的PDF表单有哪些.以下是我从网上搜索到的简单介绍: PDF 表单简介 PDF 是可移植文档格式(Portable Document Format)的 ...

  6. About 滚存

    滚存这个神奇的东西就比如DP现在这个状态是上一个状态转移过来的,但也只与上一个状态有关,所以就可以把原本的f[10000,10000]开成f[2,10000],就不会炸内存了.

  7. Spring MVC简介

    Spring MVC简介 Spring MVC框架是有一个MVC框架,通过实现Model-View-Controller模式来很好地将数据.业务与展现进行分离.从这样一个角度来说,Spring MVC ...

  8. 解决iscroll5在手机页面上onclick事件失效

    Iscroll.js使用之后页面上面A标签的onclick事件无效了   解决办法 实例化IScroll的时候把preventDefault设为false,默认为true var myScroll; ...

  9. PBOC金融IC卡,卡片与终端交互的13个步骤,简介-第三组

    七:终端风险管理-必选但包含可选步骤异常文件:终端检查应用主账号是否在异常文件列表(卡号黑名单)中.商户强制联机:商户可以将当前交易强制为联机处理.最低限额:控制交易当前交易金额或同一张卡片连续几笔交 ...

  10. Web开发的发展历史

    了解一下Web开发相关的历史,相关技术的演进历程,知其前世今生,非常有助于加深Web开发相关技术的理解和认识. 下面是对网上几篇相关文章的总结和摘要: 1. Web开发的发展史 对过去的15年来,We ...