教程集 www.jiaochengji.com
教程集 >  脚本编程  >  java  >  正文 Java入门笔记9_Socket

Java入门笔记9_Socket

发布时间:2019-01-15   编辑:jiaochengji.com
教程集为您提供Java入门笔记9,Socket等资源,欢迎您收藏本站,我们将为您提供最新的Java入门笔记9,Socket资源
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...");
}

您可能感兴趣的文章:
Java入门笔记9_Socket
Java入门笔记8_JavaTools
Java入门笔记1_HelloWorld
php入门篇-php学习笔记
Golang笔记:语法,并发思想,web开发,Go微服务相关
webwork学习笔记
J2SE学习笔记--集合框架
学习笔记之JAVA图形设计卷I AWT——第3章 图 形
Java入门笔记4_访问控制和包
J2EE学习笔记--MVC框架

[关闭]
~ ~