JAVA教程之java编写TCP体例的通讯程序
用winrar打包j2ee的程序和用IDE打包应用程序是一样的。按照你的想法,你是不是也希望服务器都整合由一家公司提供呢?程序JavaAPI中封装了大批的函数,供编写收集通讯程序时利用.这使得java在收集方面具有壮大的功效.
用java编写TCP体例的通讯程序对照复杂,但也有一些成绩必要注重.
以下为监听主程序,监听程序在发明客户端毗连后,启动一个会话socket线程,以完成及时发送,吸收信息
和多客户端同时事情.
importjava.io.*;
importjava.lang.*;
importjava.net.ServerSocket;
importjava.net.Socket;
//主程序一向处于监听形态,有毗连则启动一个线程举行处置,以完成多个客户端
publicclasslistenserve
{
privateServerSocketss;
privatebooleanlistening=true;
publiclistenserve()
{
Init();//初始化
lisn();//启动监听
}
publicvoidInit()
{
try
{
ss=newServerSocket(10015,10);
}
catch(IOExceptionie)
{
System.out.println("没法在10015端口监听");
ie.printStackTrace();
}
}
publicvoidlisn()
{
try
{
while(listening)
newThread(newdialogserve(ss.accept())).start();
}
catch(IOExceptionie)
{ie.printStackTrace();}
}
publicstaticvoidmain(Stringargs[])
{
newlistenserve();
}
}
//以下为会话主程序
应当出格注重,假如客户端先封闭,会话socket中大概抛出socketexception:connectionreset
这应当在程序中举行处置,这也是较易疏忽的成绩.
importjava.io.*;
importjava.lang.*;
importjava.net.ServerSocket;
importjava.net.Socket;
importjava.net.SocketException;
publicclassdialogserveimplementsRunnable
{
privateSockets;
privateInputStreamin;
privateStringrev,temp;
privatebyteb[];
privateintlen;
publicdialogserve(Socketss)
{
s=ss;
b=newbyte;
try
{
in=s.getInputStream();
}catch(IOExceptionie)
{
ie.printStackTrace();
}
rev="";
}
publicvoidrun()
{
try
{
while(s.isConnected()==true)
{
if((len=in.read(b))!=-1)
{
temp=newString(b,0,len);
rev+=temp;
System.out.print(rev);
temp=null;
Thread.sleep(1000);
}
}
in.close();
s.close();
System.out.println("会话socket已断开!");
}
catch(SocketExceptionse)
{
System.out.println("客户端已断开!");
System.exit(0);
}
catch(IOExceptionio)
{
io.printStackTrace();
System.exit(0);
}
catch(InterruptedExceptionire)
{ire.printStackTrace();}
}
}
//以下为客户端主程序
importjava.io.*;
importjava.net.Socket;
importjava.lang.*;
publicclassclient
{
privateSocketcon;//客户端毗连socket
privateOutputStreamout;
privateStringsen;
privatebyteb[];
publicclient()
{
clientInit();
}
publicvoidclientInit()
{
try
{
con=newSocket("localhost",10015);
con.setSoTimeout(10000);
b=newbyte;
OutputStreamout=con.getOutputStream();
sen="helloserve,以TCP体例发送数据!";
b=sen.getBytes();
out.write(b);
out.flush();
out.close();
con.close();
}
catch(IOExceptionie)
{
ie.toString();
}
}
publicstaticvoidmain(Stringargs[])
{
newclient();
}
}
总的来讲,以上所列代码较为复杂,但已基础反应出java编写复杂tcp通讯程序的道理.
但愿列位伴侣品评.人人配合进修交换.
还得说上一点,就java本质而言,是面相对象的,但是你有没有发现,java也不全是,比如说基本类型,int,那他就是整型而不是对象,转换类型是还得借助包装类。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 是一种为 Internet发展的计算机语言 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 Java 编程语言的风格十分接近C、C++语言。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
页:
[1]