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...");
}

时间: 2024-09-20 07:42:59

Java入门笔记9_Socket的相关文章

Java入门笔记1_HelloWorld

1. 说明本文档是Java入门学习笔记,本文档的所有例子都在window xp下编辑成功,即默认操作系统为window xp,并且认为JDK已成功安装.如有不当之处,请一定指出(email: 828033@tzenet.com),共同进步.本文档不介绍面向对象的基本思想,只记录与Java有关的内容.2. Hello World按惯例写一个hello world作为Java学习的入门.打开文本编辑器,输入以下代码:class HelloWorld { public static void main

Java入门笔记6_线程

1. 多线程1.1 创建线程类在Java中可以简单的从Thread类中继承创建自己的线程类:public class MyFirstThread extends Thread { public void run() { . . .}}说明:(1) Thread类位是java.lang包中,所以可以不用显示import:(2) 从Thread类中继承下来的类最好重载run()方法,以运行需要的代码:可以按以下方法实例化并运行线程:MyFirstThread aMFT = new MyFirstTh

Java入门笔记5_异常

1. 异常/错误1.1 异常处理的基本结构异常处理的基本结构如下:try { someReallyExceptionalMethod();} catch (NullPointerException n) { // a subclass of RuntimeException . . .} catch (RuntimeException r) { // a subclass of Exception . . .} catch (IOException i) { // a subclass of E

Java入门笔记7_Stream

1. Streams及I/OStream就是信息源与目的地之间的通信路径,这里的信息源可以是文件.内存.网络等.Streams主要分为input及output Stream.1.1 InputStream类类InputStream处于Input stream类层次的最顶层,它主要具有以下几种方法:1.1.1 read方法read方法用于从指定的输入流读取以字节为单位的数据,第一次从流的开始位置开始读取,以后每次从上次的结束部位开始读取,即自动实现了位移.read方法有以下三种形态:(1) int

Java入门笔记8_JavaTools

1. Java tool1.1 runtime interpreterJava runtime interpreter语法如下:java Options Classname Arguments如果类使用了包,那么Classname应包含包的名称.下面介绍Options的可选取项:(1) -debug:以deug的模式运行interpreter,它允许也jdb(Java调试器)一起使用:(2) -checksource:打开interpreter时会检查源文件即.java文件和.class文件的日

Java入门笔记4_访问控制和包

1. Java中的访问控制 表1-1 可见/访问性 public protected package private在同一类中 yes yes yes Yes同一包中 yes yes yes no不同包中 yes No No No同一包的子类中 yes yes yes No不同包的子类中 Yes Yes No No 说明:(1) 在java中有public.protected.private三种显示的修饰符用于控制可见性,package不是显示的修饰符,它是隐含的,即如果在类.变量等前没加显示的

Java入门笔记3_Datastructure

4. Data Structure4.1 Array4.1.1 基本概念数组在Java中是对象,因此使用它之前需要实例化.数组中的元素可以是基本元素,也可以是对象,但是同一数组中元素的类型必须是相同的.数组中存放的对象不是对象本身,而是对象的引用.4.1.2 数组申明与实例化(1) String difWords[]; Point hits[]; (2) String[] difWords[]; Point[] hits; 常用于方法的返回类型:(3) String[] names = new

MongoDB快速入门笔记(八)之MongoDB的java驱动操作代码讲解_mariadb

MongoDB的Java驱动是线程安全的,对于一般的应用,只要一个Mongo实例即可,Mongo有个内置的连接池(池大小默认为10个). 下面代码给大家介绍MongoDB的java驱动操作,具体代码如下所示: import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; import org.bson.Document; import com.mongodb.MongoClient; impo

MongoDB快速入门笔记(四)之MongoDB查询文档操作实例代码_MongoDB

MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 下面给大家介绍MongoDB查询文档操作的实例 先把student删除,再重新插入数据 > db.student.drop() true > db.student.insert([{ "_id" : 1, "