日期:2014-05-20  浏览次数:20790 次

【渴望您们的帮助】Java大侠们过来看看吧
为了解决同一个局域网内聊天,但没有连Internet,网
上有好些个局域网聊天工具,比较出名的象飞鸽传书。
我用JAVA开发一个这样的局域网聊天工具,保证不连
Internet能在局域网内使用。
我的疑问如下:
(1)局域网聊天工具一定要作成“点到点”(P2P)模式吧?
(2)服务器端和客户端如何糅合在一块?
(3)开发这样跟开发连接到Internet聊天软件有什么差别?
哪一个难些?
请各位大侠帮我思考一下吧,我是JAVA菜鸟,希望回答能
详细些,谢谢。

------解决方案--------------------
1.一个服务器多个客户端 由服务器转发消息
2.服务器和客户端分开啊 但是可以重用一些代码
3.主要就是网络编程那一块 局域网的和Internet没有多大区别
------解决方案--------------------
(1)局域网聊天工具一定要作成“点到点”(P2P)模式吧?
(2)服务器端和客户端如何糅合在一块?
(3)开发这样跟开发连接到Internet聊天软件有什么差别?
===>
(1)没有这个必要,这个完全根据需求来定的,没有一定要做成社么的说法
(2)服务器端和客户端完全可以存在于一台机器上的,他们的角色是一直才切换的
(3)这个区别要看是哪方面的了,如果你单做成P2P形式的,连Internet的就多一个中转而已,
局域网直接连
下面给LZ个SOCKET的例子,你研究下吧
/**
@version 1.20 2004-08-03
@author Cay Horstmann
*/

import java.io.*;
import java.net.*;
import java.util.*;

/**
This program implements a simple server that listens to port 8189 and echoes back all
client input.
*/
public class EchoServer
{
public static void main(String[] args )
{
try
{
// establish server socket
ServerSocket s = new ServerSocket(8189);

// wait for client connection
Socket incoming = s.accept( );
try
{
InputStream inStream = incoming.getInputStream();
OutputStream outStream = incoming.getOutputStream();

Scanner in = new Scanner(inStream);
PrintWriter out = new PrintWriter(outStream, true /* autoFlush */);

out.println( "Hello! Enter BYE to exit. " );

// echo client input
boolean done = false;
while (!done && in.hasNextLine())
{
String line = in.nextLine();
out.println( "Echo: " + line);
if (line.trim().equals( "BYE "))
done = true;
}
}
finally
{
incoming.close();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}