用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心编程技巧计算机网络

使用JAVA编写网络通信程序

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 10:08:00
小应用程序 Echo.java

import java.io.*;
import java.net.*;
import java.awt.*;
import java.applet.*;

public class Echo extends Applet
{
     TextArea ta;
     Socket echoSocket;
     DataOutputStream  os;
     DataInputStream  is;
     String    Line;

     public void init()           
     { 
        setBackground(Color.white);
        ta=new TextArea(5,80);
        ta.setEditable(false);
        add(ta);
        try
            {echoSocket=new Socket("10.102.4.41",1111);}  //与服务器建立连接
        catch(IOException e)
         {System.out.println("error");}
      
     }

     public void st(String stri)     //发送字符串的方法
     {
         try
      {  DataOutputStream os=new  DataOutputStream(echoSocket.getOutputStream());
           DataInputStream is=new DataInputStream(echoSocket.getInputStream());
             os.writeUTF(""+ stri );       //向服务器输送string
           os.flush();
        }
       catch(IOException e)
       {System.out.println(" error:"+e);  }
     }     
    
     public String  st1()     //接收字符串的方法
     {
      String Line="";
         try
      {  DataOutputStream os=new  DataOutputStream(echoSocket.getOutputStream());
           DataInputStream is=new DataInputStream(echoSocket.getInputStream());
              Line=is.readUTF();        //从服务器读来的信息
           ta.appendText(""+Line);         //在文本域中输出信息
            }
       catch(IOException e)
       {System.out.println(" error:"+e);  }
       return Line;
     }
}

7  程序调试心得:
1)      在建立Socket连接时,两端的端口号必须设为一致,否则建立不了连接。服务器端必须有主机IP地址或主机名参数。
2)      连接建立好之后应确定输入和输出流。起初程序中用的是DataInputStream和PrintStream,结果只能传输英文,传输中文时产生乱码,将PrintStream改为DataOutputStream,使用readUTF()和writeUTF()方法后,中文传输问题得到解决。
3)      如果一个使用某端口的程序没有关闭,另一个程序就不能使用这个端口。
4)      开始进行通信的程序均为 Application,因不符合客户机/服务器机制,应将客户端的Application改为Applet。其转化的主要步骤如下:
      创建一个包含APPLET标签的HTML文件;
      去掉应用程序中的main()方法;
      类名应继承Applet类,而不是Frame类,并在程序开头加入
    import  java.applet.*;语句;
      用init()方法代替Application程序中的构造方法,当浏览器创建Applet类对象的时候,它自动执行init()方法;
      如Application中缺省使用了BorderLayout布局管理器,应在Applet的init()方法中重新设定;
      如果Application中有setTitle()方法,必须将其去掉,如Application中使用了菜单,在Applet 中用按钮来替换。
5)      懂得了在一程序中如何引用自定义的类中的方法和变量,在程序开头加入import  类名;在程序中加入    类名  实例=new 类名();  然后使用
  实例.方法(),实例.变量即可。

参考文献:
[1] 廖雷等,Java程序设计教程,中国电力出版社,2003
[2]  Warton,Java多线程编程初步,电脑报,2004.4.10
[3] 张立等,基于Client/Server模式的数据库应用软件的设计与实现,计算机应用研究,1999(4)

上一页  [1] [2] [3] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:25,453.13000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号