组网教程 电脑入门 经验共享 系统知识 办公软件 网页教程 QQ知识 MSN知识 黑客教程
木马知识 安全漏洞 补丁知识 入侵知识 防火墙 影音制作 Premiere 硬件知识 Photoshop
Fireworks Flash教程 CorelDRAW Dreamweaver ASP教程 PHP教程 HTML教程 JAVA教程 
CataName - 电脑教程搜索  关键字:   

当前位置:首页 > 电脑教程 > JAVA教程

Java中C/S通讯程序设计一例
作者:未知 文章来源:未知 点击数:1613 更新时间2005-6-16

  一、 客户端图形界面

  本例中客户端的图形界面用Swing实现,服务器端不使用图形界面

public class javaClient extends JFrame implements ActionListener//以JFrame为基类,实现ActionListener接口
{
JButton sendButton; //"发送"按钮
JTextField inputField; // 输入框
JTextArea outputAera; // 服务器返回框
public javaClient() //在建构函数中完成图形界面的初始化
{
inputField=new JTextField("这里输入..."); //供客户端输入的文本框
outputArea=new JTextArea("服务器返回"); //显示服务器返回数据的文本域
sendButton=new JButton("发送");
JPanel panel=new JPanel(); //新建面板
panel.setLayout(new BorderLayout()); //设置面板风格为BorderLayout
panel.add(inputField,BorderLayout.NORTH); //放置控件
panel.add(outputArea,BorderLayout.CENTER);
setTitle("Java通讯客户端");
setContentPane(panel);
}
}


  二、 客户端通讯类clientAgent

  新建一个自定义包clientAgent,包含类clientAgent,该类用来执行和服务器端的交互,将界面和通讯类分开可以使程序的调试和维护更为容易。clientAgent类的作用包括:

  1、在建构函数中建立和服务器的连接。

  2、sendRequest()方法向服务器发送数据。

  3、getResponse()方法从服务器端获得回应

  1、 成员变量

clientAgent类的成员变量包括:
PrintStream ops; //输出流(指向服务器)
DataInputStream ips;//输入流(来自服务器)
String cltRequest;//客户端请求
String svrResponse;//服务器端回应

  2、 建构函数clientAgent(String serverName,int port)包含两个参数,接收从javaClient的main()函数中传递来的服务器名称和端口号

public clientAgent(String serverName,int port)
{
try
{
Socket clientSocket=new Socket(serverName,port ); //根据服务器名和端口号建立Socket
ops=new PrintStream(clientSocket.getOutputStream());//获得Socket的输出流
ips=new DataInputStream(clientSocket.getInputStream());//获得Socket的输入流
}
catch(Exception e)
{
System.out.println("无法连接服务器!");
}
}

  3、 sendRequest()方法

public void sendRequest(String request)
{
ops.println(request); //向Socket的输出流写入字符串
}
4、 getRespone()方法
public String getResponse()
{
String str=new String();
try
{
str=ips.readLine(); //从Socket的输入流读入字符串
}
catch(IOException e){} //必须捕获错误
return str;
}

  三、 客户端javaClient类的main()函数和事件处理

  1、 main()函数

  有了上面的铺垫,main()函数变得非常简洁

public static void main(String[] args)
{
javaClient frame=new javaClient();
frame.pack();//注意javaClient是JFrame的派生类,调用基类方法
frame.setVisible(true);
ca=new clientAgent("127.0.0.1",1001); //传递服务器名称和端口号
}

  2、 捕获并处理单击"发送"按钮的事件

public void actionPerformed(ActionEvent e)
{
if(e.getSource()==sendButton) //判断事件源控件是否是"发送"按钮
{
ca.sendRequest(inputField.getText()); //发送文本框中的文本
outputArea.append("\n"+ca.getResponse()); //接收服务器回应并写入文本域
}
}



  四、 服务器端

  1、 serverAgent类

  1) 成员变量

ServerSocket svrSkt=null;
Socket cltSkt=null;
DataInputStream input=null; //输入流,来自客户端
PrintStream output=null; //输出流,指向客户端

  2) serverAgent()建构函数

public serverAgent(int port) //main()函数传递监听端口号
{
System.out.println("服务器代理正在监听,端口:"+port);
try
{
svrSkt=new ServerSocket(port); //开始监听
}catch(IOException e){System.out.println("监听端口"+port+"失败");}
try
{
cltSkt=svrSkt.accept(); //接收连接请求
}
catch(IOException e){System.out.println("连接失败");}
try
{
input=new DataInputStream(cltSkt.getInputStream()); //获得输入流
output=new PrintStream(cltSkt.getOutputStream()); //获得输出流
}
catch(IOException e){}
output.println("欢迎......");
}
3) getRequest()方法读取客户端发送的数据
public String getRequest()
{
String frmClt=null;
try
{
frmClt=input.readLine();
}
catch(Exception e){
System.out.println("无法读取端口.....");
System.exit(0);
}
return frmClt;
}

  4) sendResponse()方法向客户端发送数据

public void sendResponse(String response)
{
try
{
output.println(response);
}
catch(Exception e){
System.out.println("写端口失败......");
System.exit(0);
}
}

  2、main()函数

  在main()函数中对客户端发送的不同请求进行不同的处理,本例只是介绍原理,因此服务器端只是简单地将客户端发送来的数据发送回去:

public static void main(String[] args) throws IOException
{
serverAgent sa=new serverAgent(1001);
while(true)
{
sa.sendResponse(sa.getRequest());
}
}

·上一篇教程:用Java设计下载软件
·下一篇教程:Java网络编程之传输控制协议(三)
【发表评论】【告诉好友】【加入收藏】【打印此文】【关闭窗口】

相 关 教 程 

用Java实现FTP服务器..
JavaBeans程序开发从..
Java学习的捷径
谈谈JAVA程序的反编译
学习,是一条漫长的..
教你如何成为一名Ja..
如何迅速成为Java高手
Java编出一个自己的..
如何成为一名Java初..
体验Java 1.5中面向..

热 门 教 程

用Java实现多线程服..
JAVA实现支持视频点..
java 3D 动画场景编..
用Java实现FTP服务器
教你在Jave中实现3d..
用Java设计下载软件
Java中C/S通讯程序设..
Java网络编程之传输..
Java网络编程之传输..
Java网络编程之传输..

最 新 教 程 

用Java实现FTP服务器..
JavaBeans程序开发从..
Java学习的捷径
谈谈JAVA程序的反编译
学习,是一条漫长的..
教你如何成为一名Ja..
如何迅速成为Java高手
Java编出一个自己的..
如何成为一名Java初..
体验Java 1.5中面向..

特 效 代 码

  综合特效  状态栏类
  游戏相关  页面背景
  页面特效  页面导航
  文本操作  文本特效
  图形特效  鼠标特效
  时间日期  密码相关
  浏览相关  警告对话
  技巧特效  计数转换
  测试搜索  代码生成
  播放音乐  按钮特效
  系统相关  链接特效
  黑客性质  相关特效
  窗口特效  其它特效

图 片 素 材

  精美图标  水晶图片
  一般图片  肉质图片
  菌类图片  数码风光
  数码动物  装饰素材
  实物素材  儿童素材
  动物图片  儿童图片
  风光图片  风情图片
  精美佳图  军事图片
  卡通图片  实物图片
  体育图片  植物图片
  装饰图片  桌面壁纸
  3D图片  广告图片
  绘画图片  设计素材
  素材图片  微标图片
  欣赏素材  邮票图片
  资料图片  动物动画
  一般动画  瓜果蔬菜
  观赏图片  花卉图片
  杂类图片  baby图标
  ICON图标  Logo站标
  论坛图标  像素图片