已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
package faue.MutiUser;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import .ServerSocket;import .Socket;/* * 服务器端 * * author Faue */public class Server extends ServerSocket private static final int SERVER_PORT = 10000; /* * 构造方法,用于实现连接的监听 * * throws IOException */ public Server() throws IOException super(SERVER_PORT); try while (true) Socket socket = super.accept(); new Thread(new ClientMsgCollectThread(socket), getAndShow + socket.getPort().start(); new Thread(new ServerMsgSendThread(socket), send + socket.getPort().start(); catch (IOException e) e.printStackTrace(); public static void main(String args) throws IOException new Server(); /* * 该类用于创建接收客户端发来的信息并显示的线程 * * author Faue * version 1.0.0 */ class ClientMsgCollectThread implements Runnable private Socket client; private BufferedReader in; private StringBuffer inputStringBuffer = new StringBuffer(Hello); /* * 得到Socket的输入流 * * param s * throws IOException */ public ClientMsgCollectThread(Socket s) throws IOException client = s; in = new BufferedReader(new InputStreamReader(client .getInputStream(), GBK); public void run() try while (!client.isClosed() inputStringBuffer.delete(0, inputStringBuffer.length(); inputStringBuffer.append(in.readLine(); System.out.println(getMsg(inputStringBuffer.toString(); catch (IOException e) /e.printStackTrace(); System.out.println(client.toString() + is closed!); /* * 构造显示的字符串 * * param line * return */ private String getMsg(String line) return client.toString() + says: + line; /* * 该类用于创建发送数据的线程 * * author Faue * version 1.0.0 */ class ServerMsgSendThread implements Runnable private Socket client; private PrintWriter out; private BufferedReader keyboardInput; private StringBuffer outputStringBuffer = new StringBuffer(Hello); /* * 得到键盘的输入流 * * param s * throws IOException */ public ServerMsgSendThread(Socket s) throws IOException client = s; out = new PrintWriter(client.getOutputStream(), true); keyboardInput = new BufferedReader(new InputStreamReader(System.in); public void run() try while (!client.isClosed() outputStringBuffer.delete(0, outputStringBuffer.length(); outputStringBuffer.append(keyboardInput.readLine(); out.println(outputStringBuffer.toString(); catch (IOException e) /e.printStackTrace(); System.out.println(client.toString() + is closed!); 客户端:实现基于IP地址的连接,连接后也创建两个线程来实现信息的发送和接收/* * 创建日期 2009-3-7 * */package faue.MutiUser;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import .Socket;/* * 客户端 * * author Faue */public class Client private Socket mySocket; /* * 创建线程的构造方法 * * param IP * throws IOException */ public Client(String IP) throws IOException try mySocket = new Socket(IP, 10000); new Thread(new ServerMsgCollectThread(mySocket), getAndShow + mySocket.getPort().start(); new Thread(new ClientMsgSendThread(mySocket), send + mySocket.getPort().start(); catch (IOException e) /e.printStackTrace(); System.out.println(Server.IP: + IP + port:10000 can not be Connected); public static void main(String args) throws IOException try new Client(args0); catch (Exception e) System.out.println(输入的IP地址错误); /* * 该类用于创建接收服务端发来的信息并显示的线程 * * author Faue * version 1.0.0 */ class ServerMsgCollectThread implements Runnable private Socket client; private BufferedReader in; private StringBuffer inputStringBuffer = new StringBuffer(Hello); /* * 得到Socket的输入流 * * param s * throws IOException */ public ServerMsgCollectThread(Socket s) throws IOException client = s; in = new BufferedReader(new InputStreamReader(client .getInputStream(), GBK); public void run() try while (!client.isClosed() inputStringBuffer.delete(0, inputStringBuffer.length(); inputStringBuffer.append(in.readLine(); System.out.println(getMsg(inputStringBuffer.toString(); catch (IOException e) /e.printStackTrace(); System.out.println(client.toString() + is closed!); System.exit(0); /* * 构造输入字符串 * * param line * return */ private String getMsg(String line) return client.toString() + says: + line; /* * 该类用于创建发送数据的线程 * * author Faue * version 1.0.0 */ class ClientMsgSendThread implements Runnable private Socket client; private PrintWriter out; private BufferedReader keyboardInput; private StringBuffer outputStringBuffer = new StringBuffer(Hello); /* * 得到键盘的输入流 * * param s * throws IOException */ public ClientMsgSendThread(Socket s) throws IOException client = s; out = new PrintWriter(client.getOutputStream(), true); keyboardInput = new BufferedReader(new InputStreamReader(System.in); public void run() try while (!client.isClosed() outputStringBuffer.delete(0, outputStringBuffer.leng
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026动力锂电池隔膜材料技术路线对比与产能规划报告
- 2026全球化工业供应链重构下中国危险品标签市场新机遇报告
- 2026中国颅内压监测植入系统行业急诊需求与资源配置研究
- 冀教版五年级下学期(新版)数学第8单元探索乐园单元试卷(附答案)-02
- 2026中国药物基因组学检测市场准入政策与行业规范研究报告
- 冀教版六年级下学期(新版)数学第6单元单元试卷(附答案)-02
- 冀教版(新版)五年级下学期 数学第2单元异分母分数加减法单元试卷(附答案)-03
- 2026中国石油化工过程控制传感器防爆标准与可靠性提升分析
- 2025年引流管的护理的题目及答案
- 畜禽贩运人员管理制度
- 采购部供应商评审与筛选标准
- 事故油池基坑开挖专项施工方案
- 早餐券模板可编辑
- 车联网技术与应用PPT完整全套教学课件
- 医患沟通技能评价量表(SEGUE)
- 如何识别与消除七大浪费演示文稿
- 第四章-集成运算放大电路
- 病毒性肝炎的免疫学检查
- 第一章(诱发电位概论)+第二章(体感诱发电位)(2013年)
- GB/T 25085.3-2020道路车辆汽车电缆第3部分:交流30 V或直流60 V单芯铜导体电缆的尺寸和要求
- GB/T 242-2007金属管扩口试验方法
评论
0/150
提交评论