求各位帮忙 服务端群发问题 急!!!!

bigLite 2006-03-28 11:26:09
大家好:
我现在编写了下面五个类,但是Server类和Client类只能点对点的发送,也就是说能多个客户端向服务器发送,但服务器只能向最后那一个进来的客户端发送,我想当服务端发送时所有客户端都能接收到怎么处理,五个类分别如下:(Server Client SocketPerform Receiver Sender)
五个类的关系如下:
使用单独的二个类Receiver和Sender负责对指定的输入及输出流进行操作,用另一个类SocketPerformer来创建Receiver和Sender这两个类的实例,并传入指定的输入及输出流,而在Client及Server这两个类中,负责创建SocketPerformer对象,并传入指定的Socket。因此这五个类在功能上分为三层,第一层负责对流进行操作,第二层负责创建指定的Socket流,并这些Socket流传到第一层,第三层负责创建Socket并将这些Socket传到第二层。
麻烦大家看看:先谢谢 如果大家有关于聊天的代码,如果方便给我发一份,小弟感激不尽!!!!!
我的邮箱:lite12345@sina.com.cn qq:33762274

Receiver代码:
import java.io.BufferedReader;
public class Receiver extends Thread
{
BufferedReader reader;
public Receiver(BufferedReader theSocketReader)
{
reader = theSocketReader;
}
public void run()
{
while (true)
{
try
{
String words = reader.readLine();
System.out.println("\r\n<<< " + words);
}
catch (Exception e)
{
e.printStackTrace();
return;
}
}
}
}
Sender代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class Sender extends Thread
{
PrintWriter writer=null;
public Sender(PrintWriter socketWriter)
{
writer=socketWriter;
}
public void run()
{
while(true)
{
try
{
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
String words=reader.readLine();
if(words.equals("exit"))
{
reader.close();
System.exit(1);
}
writer.write(words+"\r\n");
writer.flush();
}
catch(Exception e)
{
e.printStackTrace();
return;

}
}

}
}
SocketPerform 代码
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class SocketPerform
{
Socket socket;
public SocketPerform(Socket theSocket) {
socket=theSocket;
}
public void execute() throws Exception
{
BufferedReader socketReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter socketWriter=new PrintWriter(socket.getOutputStream());
System.out.println("connection built !");
Receiver rc=new Receiver(socketReader);
rc.start();
Sender sd=new Sender(socketWriter);
sd.start();


}
}
Server 代码
import java.net.ServerSocket;
import java.net.Socket;

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

ServerSocket server=new ServerSocket(30000,5);
System.out.println("waiting incoming connection...");
while(true)
{
Socket socket = server.accept();
System.out.println("a connection built!");
System.out.println("the peer ip is: " + socket.getInetAddress().getHostAddress());
System.out.println("the peer ip is: "+socket.getLocalAddress().getHostAddress());
String acceptIp=socket.getInetAddress().getHostAddress();
new SocketPerform(socket).execute();
//server.close();
}
}

}
Client 代码
import java.net.Socket;
import java.net.InetAddress;

import java.net.ServerSocket;

public class Client {
public Client() {
}
public static void main(String[] args) throws Exception
{
String ip="10.71.8.100";
int port=30000;
Socket socket=null;

//ip=ServerSocket(int port, int backlog, InetAddress bindAddr)
//socket=new Socket(ip,port,InetAddress.getLocalHost(),20);
socket=new Socket(ip,port);
new SocketPerform(socket).execute();

}
}
...全文
48 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dabinglian 2006-03-29
  • 打赏
  • 举报
回复
up
grapepaul 2006-03-29
  • 打赏
  • 举报
回复
up

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧