|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
用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[1024];
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[1024];
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,那他就是整型而不是对象,转换类型是还得借助包装类。 |
|