仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1820|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA网页编程之两步学会Java Socket编程

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:44:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
先说优点,首先和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而写的。
灵魂腐蚀 该用户已被删除
5#
发表于 2015-2-2 22:04:03 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
若天明 该用户已被删除
6#
发表于 2015-2-4 13:13:40 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
谁可相欹 该用户已被删除
7#
发表于 2015-2-9 23:13:48 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
山那边是海 该用户已被删除
8#
发表于 2015-2-12 07:28:27 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
9#
发表于 2015-2-26 21:57:18 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
蒙在股里 该用户已被删除
10#
发表于 2015-3-3 13:31:33 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
admin 该用户已被删除
11#
发表于 2015-3-11 06:11:06 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
因胸联盟 该用户已被删除
12#
发表于 2015-3-17 22:09:19 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
愤怒的大鸟 该用户已被删除
13#
发表于 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而写的。
只想知道 该用户已被删除
14#
发表于 2015-3-23 22:48:49 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
柔情似水 该用户已被删除
15#
发表于 2015-4-4 05:00:13 | 只看该作者
是一种为 Internet发展的计算机语言
小魔女 该用户已被删除
16#
发表于 2015-4-12 12:58:12 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
深爱那片海 该用户已被删除
17#
发表于 2015-4-16 04:08:47 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
精灵巫婆 该用户已被删除
18#
发表于 2015-4-16 06:02:12 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
金色的骷髅 该用户已被删除
19#
发表于 2015-4-26 12:25:24 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
兰色精灵 该用户已被删除
20#
发表于 2015-7-2 00:54:15 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-1 17:41

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表