逍遥一派 发表于 2015-1-18 11:44:09

JAVA网页编程之两步学会Java Socket编程

先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高。编程第一步 充实了解Socket

  1.甚么是socket

  所谓socket一般也称作"套接字",用于形貌IP地点和端口,是一个通讯链的句柄。使用程序一般经由过程"套接字"向收集收回哀求大概应对收集哀求。

  以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是创建收集毗连时利用的。在毗连乐成时,使用程序两头城市发生一个Socket实例,操纵这个实例,完成所需的会话。关于一个收集毗连来讲,套接字是同等的,并没有不同,不由于在服务器端或在客户端而发生分歧级别。不论是Socket仍是ServerSocket它们的事情都是经由过程SocketImpl类及其子类完成的。

  主要的SocketAPI:

  java.net.Socket承继于java.lang.Object,有八个机关器,其办法其实不多,上面先容利用最频仍的三个办法,别的办法人人能够见JDK-1.3文档。

  .Accept办法用于发生"堵塞",直到承受到一个毗连,而且前往一个客户真个Socket对象实例。"堵塞"是一个术语,它使程序运转临时"停止"在这个中央,直到一个会话发生,然后程序持续;一般"堵塞"是由轮回发生的。

  .getInputStream办法取得收集毗连输出,同时前往一个IutputStream对象实例,。

  .getOutputStream办法毗连的另外一端将失掉输出,同时前往一个OutputStream对象实例。

  注重:个中getInputStream和getOutputStream办法均会发生一个IOException,它必需被捕捉,由于它们前往的流对象,一般城市被另外一个流对象利用。

  2.怎样开辟一个Server-Client模子的程序

  开辟道理:

  服务器,利用ServerSocket监听指定的端口,端口能够随便指定(因为1024以下的端口一般属于保存端口,在一些操纵体系中不成以随便利用,以是倡议利用年夜于1024的端口),守候客户毗连哀求,客户毗连后,会话发生;在完成会话后,封闭毗连。

  客户端,利用Socket对收集上某一个服务器的某一个端口收回毗连哀求,一旦毗连乐成,翻开会话;会话完成后,封闭Socket。客户端不必要指定翻开的端口,一般一时的、静态的分派一个1024以上的端口。

  {创建服务器}



importjava.net.*;
importjava.io.*;

publicclassServer
{
privateServerSocketss;
privateSocketsocket;
privateBufferedReaderin;
privatePrintWriterout;

publicServer()
{
try
{
ss=newServerSocket(10000);

while(true)
{
socket=ss.accept();
in=newBufferedReader(newInputStreamReader(socket.getInputStream()));
out=newPrintWriter(socket.getOutputStream(),true);

Stringline=in.readLine();
out.println("youinputis:"+line);
out.close();
in.close();
socket.close();
}
ss.close();
}
catch(IOExceptione)
{}
}

publicstaticvoidmain(String[]args)
{
newServer();
}
}

  这个程序创建了一个服务器,它一向监听10000端口,守候用户毗连。在创建毗连后给客户端前往一段信息,然后停止会话。这个程序一次只能承受一个客户毗连。

  {创建客户端}

importjava.io.*;
importjava.net.*;

publicclassClient
{
Socketsocket;
BufferedReaderin;
PrintWriterout;

publicClient()
{
try
{
socket=newSocket("xxx.xxx.xxx.xxx",10000);
in=newBufferedReader(newInputStreamReader(socket.getInputStream()));
out=newPrintWriter(socket.getOutputStream(),true);
BufferedReaderline=newBufferedReader(newInputStreamReader(System.in));

out.println(line.readLine());
line.close();
out.close();
in.close();
socket.close();
}
catch(IOExceptione)
{}
}

publicstaticvoidmain(String[]args)
{
newClient();
}
}


  这个客户端毗连到地点为xxx.xxx.xxx.xxx的服务器,端口为10000,并从键盘输出一行信息,发送到服务器,然后承受服务器的前往信息,最初停止会话。
  

第二步 多个客户同时毗连

  在实践的收集情况里,统一工夫只对一个用户服务是不成行的。一个优异的收集服务程序除能处置用户的输出信息,还必需可以同时呼应多个客户真个毗连哀求。在java中,完成以上功效特性长短常简单的。

  计划道理:

  主程序监听一端口,守候客户接进;同时机关一个线程类,筹办接受会话。当一个Socket会话发生后,将这个会话交给线程处置,然后主程序持续监听。使用Thread类或Runnable接口来完成是不错的举措。

  {完成动静共享}



importjava.io.*;
importjava.net.*;

publicclassServerextendsServerSocket
{
privatestaticfinalintSERVER_PORT=10000;

publicServer()throwsIOException
{
super(SERVER_PORT);

try
{
while(true)
{
Socketsocket=accept();
newCreateServerThread(socket);
}
}
catch(IOExceptione)
{}
finally
{
close();
}
}
//---CreateServerThread
classCreateServerThreadextendsThread
{
privateSocketclient;
privateBufferedReaderin;
privatePrintWriterout;

publicCreateServerThread(Sockets)throwsIOException
{
client=s;

in=newBufferedReader(newInputStreamReader(client.getInputStream(),"GB2312"));
out=newPrintWriter(client.getOutputStream(),true);
out.println("---Welcome---");
start();
}

publicvoidrun()
{
try
{
Stringline=in.readLine();

while(!line.equals("bye"))
{
Stringmsg=createMessage(line);
out.println(msg);
line=in.readLine();
}
out.println("---Seeyou,bye!---");
client.close();
}
catch(IOExceptione)
{}
}

privateStringcreateMessage(Stringline)
{
xxxxxxxxx;
}
}

publicstaticvoidmain(String[]args)throwsIOException
{
newServer();
}
}


  这个程序监听10000端口,并将接进交给CreateServerThread线程运转。CreateServerThread线程承受输出,并将输出回应客户,直到客户输出"bye",线程停止。我们能够在createMessage办法中,对输出举行处置,并发生了局,然后把了局前往给客户。





他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。

海妖 发表于 2015-1-21 13:29:37

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

活着的死人 发表于 2015-1-26 22:43:01

是一种使网页(Web Page)产生生动活泼画面的语言

冷月葬花魂 发表于 2015-1-29 07:10:00

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

灵魂腐蚀 发表于 2015-2-2 22:04:03

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

若天明 发表于 2015-2-4 13:13:40

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

谁可相欹 发表于 2015-2-9 23:13:48

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

山那边是海 发表于 2015-2-12 07:28:27

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

仓酷云 发表于 2015-2-26 21:57:18

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

蒙在股里 发表于 2015-3-3 13:31:33

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

admin 发表于 2015-3-11 06:11:06

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

因胸联盟 发表于 2015-3-17 22:09:19

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

愤怒的大鸟 发表于 2015-3-19 05:57:45

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

只想知道 发表于 2015-3-23 22:48:49

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

柔情似水 发表于 2015-4-4 05:00:13

是一种为 Internet发展的计算机语言

小魔女 发表于 2015-4-12 12:58:12

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

深爱那片海 发表于 2015-4-16 04:08:47

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

精灵巫婆 发表于 2015-4-16 06:02:12

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

金色的骷髅 发表于 2015-4-26 12:25:24

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

兰色精灵 发表于 2015-7-2 00:54:15

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
页: [1] 2
查看完整版本: JAVA网页编程之两步学会Java Socket编程