电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

多线程对多个客户端的监听


发布日期:2022/3/4
 

这是一个比较简单的例子来说明socket编程服务器端使用了多线程来监听客户端

服务器端的代码

package SocketTest;

import javaio*;

import *;

import javautil*;

class SocketServer{

public SocketServer(){

Socket incoming;

ServerSocket so;

try{

so= new ServerSocket();

Systemoutprintln(等待客户端连接);

while(true){

try{

incoming = soaccept( );

Systemoutprintln(已连接客户端);

GetInfo gi=new GetInfo(incoming);//调用线程

} catch (IOException e){

eprintStackTrace();

}

}

}catch (IOException e){

eprintStackTrace();

}

}

public static void main(String[] args){

new SocketServer();

}

private static class GetInfo implements Runnable{ //线程类

private Socket incoming;

private String s=null;

private BufferedReader b;

Thread t;

public GetInfo(Socket incoming){

try{

thisincoming=incoming;

b=new BufferedReader(new InputStreamReader(incominggetInputStream()));

t=new Thread(this);

tstart();

}catch(IOException e){

eprintStackTrace();

}

}

public void run(){

try{

while (true){

s=breadLine();

Systemoutprintln(s);

if(sequals(end)){

break;

}

}

}catch(IOException e){

eprintStackTrace();

}

}

}

}

客户端的代码

package SocketTest;

import javaio*;

import *;

import javautil*;

public class SocketClient{

public static void main(String[] args){

try{

Socket so = new Socket(localhost );

Systemoutprintln(连接服务器);

BufferedReader b=new BufferedReader(new InputStreamReader(Systemin));

OutputStream outStream = sogetOutputStream();

PrintWriter out = new PrintWriter(outStream);

String s=null;

while (true){

s=breadLine();

outprintln(Client:+s);

outflush();

if(sequals(end)){

break;

}

}

}catch (IOException e){

eprintStackTrace();

}

}

}

上一篇:基于UML的工作流管理系统分析二(图)

下一篇:JXTA概念介绍(翻译)