一个客户端与服务器连接的JAVA程序 因为本人是菜鸟级别,所以请各位大师帮忙解释一下,越详细越好呀!
import javaio;
import javanet;
import javautil;
public class ChatServer {
boolean started = false;
ServerSocket ss = null;
List<Client> clients = new ArrayList<Client>();//创建一个线程数组,这样每连接一个客户端就开启一个线程管理
public static void main(String[] args) {
new ChatServer()start();
}
public void start() {
try {
ss = new ServerSocket(8888);//服务器端监听8888号端口,如果有客户端向这个端口发起请求就可以被服务器端监听到
started = true;
} catch (BindException e) {
Systemoutprintln("端口使用中");
Systemoutprintln("请关掉相关程序并重新运行服务器!");
Systemexit(0);
} catch (IOException e) {
eprintStackTrace();
}
try {
while(started) {
Socket s = ssaccept();//服务器等待客户端的连接
Client c = new Client(s);//如果有客户端发出请求,把s传给Client
Systemoutprintln("a client connected!");
new Thread(c)start();//启动一个新进程,客户端与服务端建立通信
clientsadd(c);//
}
} catch (IOException e) {
eprintStackTrace();
} finally {
try {
ssclose();
} catch (IOException e) {
eprintStackTrace();
}
}
}
}
class Client implements Runnable {
private Socket s;
private DataInputStream dis = null;
private DataOutputStream dos = null;
private boolean bConnected = false;
public Client(Socket s) {
thiss = s;
try {
dis = new DataInputStream(sgetInputStream());//建立通信后,获得输入流
dos = new DataOutputStream(sgetOutputStream());//获得输出流
bConnected = true;
} catch (IOException e) {
eprintStackTrace();
}
}
public void send(String str) {
try {
doswriteUTF(str);//向流里面写入数据str
} catch (IOException e) {
eprintStackTrace();
}
}
public void run() {
try {
while(bConnected) {
String str = disreadUTF();//从流里面读取数据赋给str
Systemoutprintln(str);
for(int i=0; i<new ChatServer()clientssize(); i++) {
Client c = new ChatServer()clientsget(i);
csend(str);
}
}
} catch (EOFException e) {
Systemoutprintln("Client closed!");
} catch (IOException e) {
eprintStackTrace();
} finally {
try {
if(dis != null) disclose();
if(dos != null) dosclose();
if(s != null) {
sclose();
//s = null;
}
} catch (IOException e1) {
e1printStackTrace();
}
}
}
}
主要就是这些,客户端的程序不完整,而且跟服务端差不多,你对照着书看 应该能看懂
你的不是B/S,B/S的意思是Browser(浏览器) Server(Web服务器),根据你的描述,你的客户端有3个类,服务端有2个类,是很明显的C/S模式,这个不需要建什么Web服务吧。
如果你想把你的程序运行起来,你首先要把服务端的代码执行起来,怎么执行?你把你服务端的两个类打成一个可执行的jar包(eclipse的export命令可以帮助你打可执行jar包),然后执行javaw -jar xxxxjar,把你的服务端程序跑起来。用同样的方式,把你的客户端程序跑起来就可以了。
web程序在64位linux中使用64为jdk和64为weblogic中,使用java连接timesten。
连接前需配置dsn,具体配置请见 文库 linux上2种配置dsn连接tiemsten方式
应用程序部署在64位linux上的weblogic中,需要先拷贝/etc/TimesTen/tt1121/lib/下面的几个so文件到
64为位jdk中 /usr/jdk160_27/jre/lib/amd64/目录,
libttclientso
libttclientsogcc346
libttclientsogcc410
libttenso
libttJdbcCSso
libttJdbcso
同时需要拷贝/etc/TimesTen/lib 中 ttjdbc6jar 文件到应用程序的WEB-INF/lib目录
jdk路径和timesten路径根据具体情况改变
web程序在64位linux中使用64为jdk和64为weblogic中,使用java连接timesten。
连接前需配置dsn,具体配置请见 文库 linux上2种配置dsn连接tiemsten方式
应用程序部署在64位linux上的weblogic中,需要先拷贝/etc/TimesTen/tt1121/lib/下面的几个so文件到
64为位jdk中 /usr/jdk160_27/jre/lib/amd64/目录,
libttclientso
libttclientsogcc346
libttclientsogcc410
libttenso
libttJdbcCSso
libttJdbcso
同时需要拷贝/etc/TimesTen/lib 中 ttjdbc6jar 文件到应用程序的WEB-INF/lib目录
jdk路径和timesten路径根据具体情况改变
写个简单点的服务器跟客服端就行了我写了个很简单的,只能在一个客户端跟一个服务器通信,在控制台输入下面这个是服务器import javaio;
import javanet;
import javautilScanner;public class Server
{
public static void main(String[] args)
{
try {
ServerSocket server=new ServerSocket(8888);//定义客户端的端口号
Socket client=serveraccept();//定义一个Socket对象
InputStream is=clientgetInputStream();//服务器接受信息输入流,也就是接受从服务器段发送过来的消息
BufferedReader br=new BufferedReader(new InputStreamReader(is));//用bufferedreader包装下输入流
OutputStream os=clientgetOutputStream();//这是用来给服务器发送消息的输出流
PrintStream ps=new PrintStream(os);
Scanner scanner=new Scanner(Systemin);//从键盘输入字符串
boolean flag=true;//定义一个死循环,让服务器不停的接受从客户端发送来的字符串
while(flag)
{
String s=brreadLine();//s是从客户端接受到得字符串
Systemoutprintln(s);
String s2=scannernextLine();//s2是写给客户端的字符串
psprintln(s2); //给客户端发送你写的东西
}
clientclose();
} catch (IOException e) {//try 跟catch你不用管,这是用来处理异常的,就是固定格式
eprintStackTrace();
}
}
} 下面是客户端import javaio;
import javanet;
import javautilScanner;public class Client
{ public static void main(String[] args)
{
try
{
Socket client=new Socket("192168----",8888);//IP地址是个字符串,端口号是个整数,这个端口号要跟前面你写的那个一样,还有IP地址,写你的机器的IP地址
InputStream is=clientgetInputStream();//这边的两个流跟上面服务器的差不多的作用
BufferedReader bf=new BufferedReader(new InputStreamReader(is));
OutputStream os=clientgetOutputStream();
PrintStream ps=new PrintStream(os);
Scanner scanner=new Scanner(Systemin);
boolean flag=true;
while(flag)//这句话可以让客户端不停的说话
{
String s2=scannernextLine();
psprintln(s2);
String s=bfreadLine();
Systemoutprintln(s); }
clientclose();
}
catch (UnknownHostException e)
{
eprintStackTrace();
}
catch (IOException e)
{
eprintStackTrace();
} }}
0条评论