一个客户端与服务器连接的JAVA程序 因为本人是菜鸟级别,所以请各位大师帮忙解释一下,越详细越好呀!

一个客户端与服务器连接的JAVA程序 因为本人是菜鸟级别,所以请各位大师帮忙解释一下,越详细越好呀!,第1张

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();

} }}

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 一个客户端与服务器连接的JAVA程序 因为本人是菜鸟级别,所以请各位大师帮忙解释一下,越详细越好呀!

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情