java 多线程服务端_用java多线程实现服务器与客户端原理

展开全部

// 在服务器上部署的程序

package wang.socket.Server;

// java 提供的网络功能包

import java.net.*;

// java 提供的输入输出的32313133353236313431303231363533e58685e5aeb931333264636333功能包

import java.io.*;

// 使用线程来处理Socket请求

public class ThreadServer {

public static void main(String[] args) throws Exception {

// 监听服务

ServerSocket server;

// 启动一个监听服务器

server = new ServerSocket(9999);

System.out.println("---------> 一个Socket监听服务器启动:" + server.toString());

while (true) {//循环地响应客户端的请求

//获得客户端连接,也就是要建立一个Socket套接字,由于没有使用线程,多个客户端连接会排队

// ServerSocket的接收套接字的方法是采用队列并等待的方式,如果没有呼入连接,则程序在等待,不向下执行.

Socket client = server.accept();

// 创建线程,让线程去应答客户的请求

new ServerThread(client).start();

}

}

}

// 以线程处理客户的请求

class ServerThread extends Thread {

//主程序的main函数会把创建的Socket作为参数传递给线程执行.

private Socket sk;

public ServerThread(Socket s) {

this.sk = s;

}

@Override

public void run() {

System.out.println("(一个客户请求:)" + this.sk.toString());

// 缓冲区读取器

BufferedReader in;

// 响应器

PrintWriter out;

// 取得客户端的计算机的IP地址

String remoteIP = this.sk.getInetAddress().getHostAddress();

// 取得客户端用于通讯的端口号

int remotePort = this.sk.getLocalPort();

// 在服务器的监控台上显示客户端接入的信息

System.out.println("一个客户端正在连入, IP:" + remoteIP + ", 端口: " + remotePort);

//获得 client 端的输入输出流,为进行交互做准备

try {

in = new BufferedReader(new InputStreamReader(this.sk.getInputStream()));

//获得输出

out = new PrintWriter(this.sk.getOutputStream(), true);

//获得 client 端发送的数据࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值