网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.学习深入Java 1.5枚举类型的内部.
.利用ThreadLocal简化struts开发.
.在JavaScript程序中整合Java函数.
.WEB开发中的JAVA字符编码经验总结.
.JBuilder 常用图标含义.
.spring 2.0 的事务自动处理.
.Java与.NET之外的语言视界详谈.
.为什么要学习Java,成为Java程序.
.提升性能:使用String还是String.
.Java操作二维数组实例.
.基于Java的Web服务器工作原理(2).
.Xalan-Java XSLT处理器及其分割功.
.成员函数的重载.
.Java Applet编程入门之一.
.java版的SHA-1.
.Rational Rose 2001安装手册.
.Java学习:线程池的简单构建.
.SCJP学习指南.
.引用造型protected和private的困.
.将存储过程封装为EJB组件的方法.

Java入门笔记9_Socket

发表日期:2008-1-5



  1. Client/Server Networking
Java通过socket来完成它所有的网络底层的通讯,socket是一种通讯的通道,通过它可以将数据通过特定的端中发送及接收。Java中的socket可以分成二大类:

(1) Datagram Sockets:数据包socket;

(2) Stream Sockets:流socket;

1.2 Datagram Socket
Datagram socket使用UDP来实现数据通讯,因此它不能保证数据能够到达目的地,但是由于它不需要专用的网络链接,所以它所需的资源相对少的多。

Datagram以包的方式发送数据,但它不能保证这些数据包以特定的顺序到达目的,因此包中往往需要包含序列号的信息,接收方可以根据序列号的信息决定是否所有的包都已收到,并按正常顺序重组这些包。

Java通过两个类DatagramSocket和DatagramPacket来支持Datagram socket。DatagramSocket实现了Datagram socket的基本功能,而DatagramPacket则提供了对包的一些支持。

DatagramSocket的几个重要方法:

(1) DatagramSocket():随机绑定一个有效的端口;

(2) DatagramSocket(int port):绑定指定的端口;

(3) Void send(DatagramPacket p):发送数据报,由于目的地的地址信息已包含在数据报中,所以不需要在本函数中提供地址信息;

(4) synchronized void receive(DatagramPacket p):接收数据包,线程安全;

(5) synchronized void close():关闭socket;

在DatagramSocket中并不区分ServerSocket和ClientSocket,假如一定要区分,那么发送的是client,而接收的是server。

DatagramPacket有以几个重要的方法:

(1) DatagramPacket(byte ibuf[], int ilength):用于接收数据报;

(2) DatagramPacket(byte ibuf[], int ilength, InetAddressiaddr, int iport):用于发送的数据报;

(3) byte[] getData()

(4) int getLength()

以下是完整的Datagram Socket的例子:

接收端,Server端代码:

import java.io.*;

import java.net.*;



class FortuneServer1 extends Thread

{

DatagramSocket ServerSocket;

public FortuneServer1()

{

super("FortuneServer1");

try

{

ServerSocket = new DatagramSocket(1114);

System.out.println("FortuneServer up and running...");

}

catch (SocketException e)

{

System.err.println("Exception: couldn't create datagram socket");

System.exit(1);

} }



public static void main(String[] args)

{

FortuneServer1 server = new FortuneServer1();

server.start();

}



public void run()

{

if (ServerSocket == null)

return;



while (true)

{

try

{

InetAddress address;

int port;

DatagramPacket packet;

byte[] data = new byte[256];
上一篇:Java入门及faq__1(1) 人气:478
下一篇:java入门文章--安装 人气:646
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐