| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1124 人关注过本帖
标题:[讨论]如何在多线程通讯中加入生产者和消费者线程
只看楼主 加入收藏
编程之道
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-10-9
收藏
 问题点数:0 回复次数:1 
[讨论]如何在多线程通讯中加入生产者和消费者线程

我在编写一通讯程序 实行多线程通讯的,一个服务器端,多个客户端间的通讯,如何加入生产者与消费者线程。
客户端:
import java.io.*;
import java.net.*;
public class TalkClient {
public static void main(String args[]){
try{
Socket socket=new Socket("127.0.0.1",4700);//向本机的4700端口发出客户请求
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket对象得到输入流,并构造相应的BufferedReader对象
PrintWriter os=new PrintWriter(socket.getOutputStream());


String readline;
readline=sin.readLine();
while(!readline.equals("bye"))
{ os.println(readline);
os.flush();
System.out.println("Server:"+is.readLine());
//从Server读入一字符串,并打印到标准输出上
readline=sin.readLine();
}
is.close(); //关闭Socket输入流
socket.close(); //关闭Socket
}catch(Exception e) {
System.out.println("Error"+e);//出错,则打印出错信息
}
}
}
服务端:
import java.io.*;
import java.net.*;
import java.applet.Applet;
import java.lang.Thread;
class ServerThread extends Thread
{ Socket socket=null;
int clientnum;
public ServerThread(Socket socket,int num)
{this.socket=socket;
clientnum=num+1;
}
public void run()
{try
{BufferedReader is =new BufferedReader(new InputStreamReader(socket.getInputStream()));

PrintWriter os=new PrintWriter(socket.getOutputStream());
os.println("线程"+clientnum+'\n');//向客户端输出该字符串
os.flush();
System.out.println("线程"+clientnum);
String aa;
while(true)
{ if(is.ready())
{ aa=is.readLine();System.out.println("Client:"+aa);
os.println("Server output "+aa+'\n');//向客户端输出该字符串
os.flush();
}

}



}
catch(Exception e)
{System.out.println(1);
}
}
}

public class TalkServer{
public static void main(String args[]){
try{
ServerSocket serverSocket=null;
boolean listening=true;
try{
serverSocket=new ServerSocket(4700);//创建一个ServerSocket在端口4700监听客户请求
}catch(IOException e){

}
int clientnum=0;
while(listening)
{new ServerThread(serverSocket.accept(),clientnum).start();
clientnum++;
}


serverSocket.close(); //关闭ServerSocket
}catch(Exception e){
System.out.println("Error:"+e); //出错,打印出错信息
}
}
}

搜索更多相关主题的帖子: 消费者 线程 生产者 通讯 
2007-11-10 11:06
a276202460
Rank: 2
等 级:新手上路
威 望:4
帖 子:392
专家分:1
注 册:2007-4-10
收藏
得分:0 

线程中获得流
try {

in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new PrintWriter(s.getOutputStream());
} catch (Exception e) {

}
在run中用while时实监控流中获得的信息


2007-11-10 11:17
快速回复:[讨论]如何在多线程通讯中加入生产者和消费者线程
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024195 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved