有二年以上开发经验的请看看

bigLite 2006-04-01 06:06:17
大家好:
我现在编写了下面五个类,但是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();

}
}

...全文
825 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
sail988 2006-04-11
  • 打赏
  • 举报
回复
为什么要两年以上的经验呢?
Gorgr 2006-04-11
  • 打赏
  • 举报
回复
为什么要两年以上的经验呢?
boyu_song 2006-04-11
  • 打赏
  • 举报
回复
哗众取宠!
chenyuchengfeng 2006-04-11
  • 打赏
  • 举报
回复
just 路过。。。。。
yanhan0615 2006-04-11
  • 打赏
  • 举报
回复
看来是引起公愤了


为什么要两年以上的经验呢?

shantang1984 2006-04-11
  • 打赏
  • 举报
回复
楼主有点傲哟,这个不一定要两年开发经验的!......
chaosking 2006-04-10
  • 打赏
  • 举报
回复
服务器保留所有连接用户的信息.做一个循环就OK了.....搞不懂为什么要两年经验...我看2月书就能写了....
zuoyangguang 2006-04-07
  • 打赏
  • 举报
回复
题目不对头吧
bigLite 2006-04-07
  • 打赏
  • 举报
回复
求大家少讲废话,多做实事。
码未央 2006-04-06
  • 打赏
  • 举报
回复
上面的汉字看起来挺专业,下面的代码看起来就......
caianheng123 2006-04-06
  • 打赏
  • 举报
回复
我店里现在搞特价,质量有保证!买移动硬盘请选择我们绝对不后悔,你的最好选择。就在这【领先数码商城】移动硬盘专卖店:http://shop33473501.taobao.com/希望各位在解决问题的同时能够去逛下我的店,打搅了各位!!
skycncomp 2006-04-06
  • 打赏
  • 举报
回复
为什么要两年以上的经验呢?

我只有两天的经验行吗?
netboygg 2006-04-06
  • 打赏
  • 举报
回复
感觉像到了 mop 哟~~~~~~~~



为什么要两年以上的经验呢?
netboygg 2006-04-06
  • 打赏
  • 举报
回复
为什么要两年以上的经验呢?
andyljf 2006-04-06
  • 打赏
  • 举报
回复
为什么要两年以上的经验呢?
ytll 2006-04-06
  • 打赏
  • 举报
回复
为什么要两年以上的经验呢?
jojo015 2006-04-05
  • 打赏
  • 举报
回复
为什么要两年以上的经验呢?
lomes 2006-04-04
  • 打赏
  • 举报
回复
为什么要两年以上的经验呢?
wenwenerya 2006-04-04
  • 打赏
  • 举报
回复
我大概试了一下~
如果你想让所有客户端都接受到服务器的消息,你应该在服务器收到每个客户端的连接请求的时候,记录下每个客户端的IP和端口号。应该就可以了~
不过要注意线程的处理~~
lanfanghelanfanghe 2006-04-04
  • 打赏
  • 举报
回复
为什么要两年以上的经验呢?
加载更多回复(25)

62,629

社区成员

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

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