Java学习——网络编程(服务器端支持多个客户端同时工作)
来源:互联网 发布:linux oracle 安装 编辑:程序博客网 时间:2024/06/14 00:00
如何实现服务器端支持多个客户端同时工作?秘籍就是:在服务器端利用多线程。
客户端:
import java.io.*;import java.net.*;/** * Socket客户端 * 功能为:发送字符串“Hello”到服务器端,并打印出服务器端的反馈 */public class MulSocketClient { public static void main(String[] args) { Socket socket = null; InputStream is = null; OutputStream os = null; //服务器端IP地址 String serverIP = "127.0.0.1"; //服务器端端口号 int port = 10000; //发送内容 String data[] ={"First","Second","Third"}; try { //建立连接 socket = new Socket(serverIP,port); //初始化流 os = socket.getOutputStream(); is = socket.getInputStream(); byte[] b = new byte[1024]; for(int i = 0;i < data.length;i++){ //发送数据 os.write(data[i].getBytes()); //接收数据 int n = is.read(b); //输出反馈数据 System.out.println("服务器反馈:" + new String(b,0,n)); } } catch (Exception e) { e.printStackTrace(); //打印异常信息 }finally{ try { //关闭流和连接 is.close(); os.close(); socket.close(); } catch (Exception e2) {} } }}
服务器端:
import java.net.ServerSocket;import java.net.Socket;/** * 支持多客户端的服务器端实现 */public class MulThreadSocketServer { public static void main(String[] args) { ServerSocket serverSocket = null; Socket socket = null; //监听端口号 int port = 10000; try { //建立连接 serverSocket = new ServerSocket(port); System.out.println("服务器已启动:"); while(true){ //获得连接 socket = serverSocket.accept(); //启动线程 new LogicThread(socket); } } catch (Exception e) { e.printStackTrace(); }finally{ try{ //关闭连接 serverSocket.close(); }catch(Exception e){} } }}
服务器端多线程类:
import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;public class LogicThread extends Thread { Socket socket; InputStream is; OutputStream os; public LogicThread(Socket socket){ this.socket = socket; start(); //启动线程 } public void run(){ byte[] b = new byte[1024]; try{ //初始化流 os = socket.getOutputStream(); is = socket.getInputStream(); for(int i = 0;i < 3;i++){ //读取数据 int n = is.read(b); //逻辑处理 byte[] response = logic(b,0,n); //反馈数据 os.write(response); } }catch(Exception e){ e.printStackTrace(); }finally{ close(); } } /** * 关闭流和连接 */ private void close(){ try{ //关闭流和连接 os.close(); is.close(); socket.close(); }catch(Exception e){} } /** * 逻辑处理方法,实现echo逻辑 * @param b 客户端发送数据缓冲区 * @param off 起始下标 * @param len 有效数据长度 * @return */ private byte[] logic(byte[] b,int off,int len){ byte[] response = new byte[len]; //将有效数据拷贝到数组response中 System.arraycopy(b, 0, response, 0, len); return response; }}
- Java学习——网络编程(服务器端支持多个客户端同时工作)
- TFTP服务器端源代码,可同时支持多个客户端同时下载上传
- java网络编程客户端,服务器端
- 网络编程 一个服务器同时为多个客户端服务
- linux socket网络编程:fcntl select(多个客户端连接服务器端情形)
- linux socket网络编程:fcntl select(多个客户端连接服务器端情形)
- linux socket网络编程:fcntl select(多个客户端连接服务器端情形)
- linux socket网络编程:fcntl select(多个客户端连接服务器端情形)
- Java网络编程客户端和服务器端
- java网络编程 客户端和服务器端
- java网络编程之socket网络编程示例(服务器端/客户端)
- java网络编程之socket网络编程示例(服务器端/客户端)
- UNIX网络编程----多进程并发服务器(这样就支持多个客户端连接了)
- C#网络编程,多个客户端连接服务器端并发送消息
- Linux网络编程(四)——多线程实现简单的聊天(linux 服务器端 windows客户端)
- 网络编程学习之TCP客户端与服务器端
- UNIX网络编程学习(8)--服务器端显示客户端的IP地址和端口号
- 一个ASP(JScript)简单SQL语句构建“类”,同时支持客户端和服务器端执行的
- @Test
- java线程
- MFC界面(一)在对话框上添加最小化功能.
- Windows 文件属性
- SPIPGM for DHGPP
- Java学习——网络编程(服务器端支持多个客户端同时工作)
- plsql打印图形
- MFC界面(二)Radio Button 单选框
- windows编程学习笔记
- log4Net使用及配置注解(整理)
- Boost BOOST_FOREACH的扩展
- 李涛老师笔记(可供复习)
- java例程练习(关于重写[overwrite/override])
- 模板程序