java第二十五节-多线程socket通信
来源:互联网 发布:手机淘宝么注册网店 编辑:程序博客网 时间:2024/06/08 03:41
多线程服务器
应用多线程来实现服务器与多客户端之间的通信基本步骤
1、服务器端创建Serversocket,循环使用accept()等待客户端连接
2、客户端创建一个socket并请求和服务器端服务器连接
3、服务器端接受客户端请求,创建socket与该客户建立专线连接
4、建立连接的两个socket在一个单独的线程上对话
应用多线程来实现服务器与多客户端之间的通信基本步骤
1、服务器端创建Serversocket,循环使用accept()等待客户端连接
2、客户端创建一个socket并请求和服务器端服务器连接
3、服务器端接受客户端请求,创建socket与该客户建立专线连接
4、建立连接的两个socket在一个单独的线程上对话
5、服务器端继续等待新的链接
客户端
package com.socket;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;import java.net.UnknownHostException;import org.omg.CORBA.portable.InputStream;import org.omg.CORBA.portable.OutputStream;/* * 客户端 * 服务器端要先驱动 * */public class Click {public static void main(String[] args) {try {//创建客户端Socket,指定服务器地址和端口Socket socket = new Socket("localhost",8877);java.io.OutputStream os = socket.getOutputStream();//字节流输出PrintWriter pw = new PrintWriter(os);//将输出流包装为打印pw.write("用户名:admin,密码:123456");pw.flush();socket.shutdownOutput();//获取输入流,并读取服务器端的相应信息java.io.InputStream is = socket.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is));String info = null;while ((info=br.readLine())!=null){System.out.println("服务端说:"+info);}//关闭br.close();is.close();pw.close();os.close();socket.close();} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}//获取输出流,向服务器端发送信息}}
服务端
package com.socket;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import org.omg.CORBA.portable.InputStream;import org.omg.CORBA.portable.OutputStream;/* * 服务器 * */public class Server {public static void main(String[] args) {// TODO Auto-generated method stubtry {//创建一个服务器Socket,即ServerSocket,指定绑定端口,并监听此端口ServerSocket serverSocket = new ServerSocket(8877);System.out.println("***服务器即将启动,等待客户的链接***");int count= 0;while (true){//调用accepy方法开始监听,等待客户的链接Socket socket = serverSocket.accept();//创建一个新的线程ServerThread serverThread = new ServerThread(socket);//启动线程serverThread.start();count++;System.out.println("count="+count);}//serverSocket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
线程控制类
package com.socket;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;/* * 服务器端线程处理类 * */public class ServerThread extends Thread {Socket socket = null;public ServerThread(Socket socket){this.socket=socket;}public void run(){PrintWriter pw=null;java.io.OutputStream os=null;BufferedReader br=null;InputStreamReader isr=null;java.io.InputStream is=null;try {is = socket.getInputStream(); isr = new InputStreamReader(is);//将字节流转换成字符流 br = new BufferedReader(isr); String info = null; while ((info=br.readLine())!=null){ System.out.println("客户端说:"+info); } socket.shutdownInput(); //获取输出流,相应客户端的请求 os = socket.getOutputStream(); pw = new PrintWriter(os);//包装为打印流 pw.write("欢迎你!"); pw.flush();//调用flush()方法将缓冲输出 pw.close(); os.close(); is.close(); isr.close(); br.close(); socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
0 0
- java第二十五节-多线程socket通信
- 第二十五节 java学习 接口
- Java基础部分第二十五节
- Java Socket通信(多线程)
- Java Socket多线程通信例子
- java模拟多线程socket通信
- php学习 第二十五节
- 第二十五节JDBC
- Java Socket实战之二 多线程通信
- Java Socket实战之二 多线程通信
- Java Socket实战之二 多线程通信 .
- Java Socket实战之二 多线程通信
- 简单模拟多线程Socket通信(java)
- Java Socket实战之二 多线程通信
- Java Socket实战之二:多线程通信
- Java Socket实战之二 多线程通信
- Java Socket实战之二 多线程通信
- Java Socket实战之二 多线程通信
- 1到a的奇数的和
- tomcat 的 SSL 配置
- 斯坦福大学深度学习与自然语言处理第二讲:词向量
- 多重背包二进制
- java实用教程
- java第二十五节-多线程socket通信
- 面试大全1
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
- 算法导论一——关于MergeSort(归并排序)总结
- 设计模式之职责链模式
- Material Design 实现之主题使用Theme
- POJ2387 Til the Cows Come Home
- Linux系统中校验下载文件的完整性方法(MD5,SHA1,PGP)
- 斯坦福大学深度学习与自然语言处理第三讲:高级的词向量表示