Professional Documents
Culture Documents
Java Downloaded From PDF
Java Downloaded From PDF
JAVA
1. 1
1.1 Java
1.2 Java
1.3 Java Applet
1.4 Internet Java
2. 5
2.1 Java
2.2 Java
2.3 Java
2.4 (Inheritance)
2.5 (overloading)
2.6 (constructors)
2.7 (Finalization)
2.8 (access specifiers)
2.9 (Modifiers)
2.10 Casting
2.11
2.12 (Polymorfism)
2.13 (Interfaces)
2.14 (Packages)
3. - - 19
3.1 Java
3.2 , literals, ,
3.3
3.4 (Strings)
3.5
3.6
4. (Exceptions) 31
5. Applets Java 33
5.1 Applets
5.2 Applets Web
5.3 , X
5.3.1 Graphics
5.3.2 Fonts
5.3.3 Color
5.3.4
6. Threads 41
6.1 Threads
6.2 H Threads
6.3 Threads Applets
6.4 Threads
6.5 Threads
9. Animation Java 69
9.1 Animation
9.2 animation loop
9.3 animation
9.4
10. / Streams 75
10.1
10.2 System
10.3 System
10.4 DataInput Stream
10.5 DataOutput Stream
11. Java 78
11.1 Uniform Resource Locator (URL)
11.1.1 URL (relative)
11.1.2 URL
11.1.3 MalformedURLException
11.1.4 URL
11.1.5 URL
11.1.6 URL
11.1.7 URLConnection
11.1.8 URLConnection
11.2 Sockets 86
11.2.1 Client Server
11.2.2 Client Server TCP sockets
11.2.3 Socket
11.2.4 ServerSocket
11.2.5 Datagrams
11.2.6 UDP Datagrams
11.2.7 DatagramSocket
11.2.8 DatagramPacket
Java 1
1.
Internet World-Wide Web
.
Java, Sun microsystems TM.
Java
.
Java
( C++).
applets (applet =
HTML Web Browser).
Interpreted . java compiler
(bytecode)
. interpreter
(=) bytecode .
java bytecodes
, ,
java interpreter. java bytecode
, ( Kilobytes). .
(distributed). Java
.
sites.
(secure). -
, ' Java
applet
.
multithreaded. Java threads.
, Java runtime
system (interpreter) (scheduler),
threads
. .
multimedia . Java
multimedia .
.
1.1 Java
Java
Java 2 Platform Standard Edition (J2SE), Sun microsystems.
Java J2SE Java 2 5.0.
appletviewer
applets Java. stand-alone , ,
appletviewer java javaw.
1.2 Java
Java
(stand-alone application).
HelloWorldApp.java
:
/**
* The HelloWorldApp class implements an application that
* simply displays "Hello World!" to the standard output.
*/
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); //Display the string.
}
}
compiler HelloWorldApp.class
Java interpreter:
java HelloWorldApp
"Hello World!"
HelloWorld.java
:
import java.applet.Applet;
import java.awt.Graphics;
compiler HelloWorld.class
<HTML>
<HEAD>
<TITLE> A Simple Program </TITLE>
</HEAD>
<BODY>
Java Tutorial:
http://java.sun.com/docs/books/tutorial/
.
.
Java API :
http://java.sun.com/j2se/1.5/docs/api/index.html
Java. Application Programming Interface Java (Java API)
Java
(), .
Java Platform:
http://java.sun.com/j2se/1.5.0/download.jsp
Java 1.1.
Java. JRE
(Java Runtime Environment) Web Browser
. JRE Web Browser java applets.
Java 4
Java 5
2.
, (OOP - Object Oriented Programming),
. OOP
(objects)
()
.
user interfaces
...
(class) .
-
. - , (instances)
instantiation.
'
.
.
( ).
2.1 JAVA
< >
< >
< >
...
,
main() C. ,
,
.
interpreter .
:
JAVA.
Java 6
2.2 JAVA
. .
`
C
PASCAL. instance variables
.
structure C
structures.
( )
, .
C.
, ( -
), - .
:
<>.<>(< >);
..
mycar.startEngine();
structure C.
.
.
OOP.
.
.
interface
. implementation hiding
data abstraction.
2.3 JAVA
java structure C.
:
class <class_name> {
<data_type or class_name> <variables or objects>;
...
}
..
class Apple {
int num_of_vitamins; //
int countVitamins() { //
return num_of_vitamins;
}
num_of_vitamins int.
java ( int, float, char ),
. Vitamins v1, v2, v3
Vitamin ( )
.
.
.
.
.
(debugging).
class test {
float add2Accum(float f) { // Add to accumulator.
return (Accumulator += f);
}
float Accumulator = 0.0; // The accumulator.
}
2.4 (inheritance)
. " ".
(instances)
.
. ,
extends :
java :
class A {
int a;
void add(int x) {
a += x;}
}
Java 8
class B extends A {
// 'a' 'void add(int x) {...}' .
int prev;
void sub(int x) {
prev = a;
a -= x;
}
}
a
void add(int x). .
.
' ( ). ..
class B extends A {
int square() {
return a*a;
}
void increaseBy1() {
add(1);
}
}
. :
class B extends A {
a : float; // .
void add(int x) { // add(int x).
// overriding.
a = a + ((float) x);
print(a);
}
}
,
, (overriding)
/ / .
override ,
.
.
, (), (subclass)
. (superclass)
. subclassing.
.
.
. ..
class A
class D class B
class C
Java 9
superclass D. superclass C,
superclass C! ( ). B, D
subclasses A, C subclass . C
.
overriding
/
.... C
override ' .
- 1
Object compiler
( ). :
class Object (*)
class C
(*) compiler A, B, C,
D, mySocket .
- 2 ( this super)
- (overrides)
.
subclass
. ..
class A {
void doSomething() {
......
}
}
class B extends A {
void doSomething() { // "" (overrides)
........ // doSomething() .
}
}
A o1;
B o2;
o1.doSomething(); // doSomething() .
o2.doSomething(); // doSomething() .
Java 10
( C)
doSomething() , ,
' .
java .
, , -
super .
override, ( doSomething()),
:
super.doSomething();
class A {
int a;
void set(int a) {
this.a = a;
}
}
) .
.
class A {
void make_a_new_object() {
B tmp;
// create a new instance of B and store it in tmp.
// Then give tmp a pointer to you.
tmp.owner(this);
}
}
2.5 (overloading)
, .
class number {
int a;
void add(int x) {
a += x;
}
void add(float f) {
a += ((int) f);
}
void add(number n) {
a += n.get_a();
}
int get_a() {
return a;
}
}
Java 11
. ,
'
, , .
.
2.6 (constructors)
, (. object ).
(constructors) . constructors
. constructors
()
. .
constructor
constructor ( )
.
constructors. JAVA
, :
class A {
int n;
A() { // Constructor - 1
n=0;
}
A(int x) { // Constructor - 2
n = x;
}
}
constructors
. , constructors , void.
( ).
:
A a;
a = new A();
a = new A(5);
4. constructor
instanciation default constructor
( ) . constructor
super(....); super(...) super
, ( this),
constructor .
( super).
5. super(...) this(....)
constructors
.
java strings
( ) . string
java String, :
String str = new String("Hello, I am a new string!");
2.7 (Finalization)
C++ Object PASCAL
(destructors) . destructors
. JAVA
.
.
(dangling pointer).
JAVA
(finalization) . . runtime system
java
. (garbage)
. void finalize()
clean-up.
. finalize()
.
- garbage
collection JAVA runtime
system.
public - /
, .
protected - /
.
private - /
.
- public package.
class A {
public int a; //
int b; // package,
protected c; //
private d; // .
class B extends A {
// I CAN SEE : a, b, c, A() via super(), add(int), add(A),
// convert_A_to_int(A), BUT I CAN'T SEE : d, who_am_i()
}
:
public class A {
.......
}
() ,
command line java interpreter
.
.java, (.. A.java). ,
- :
public static void main(String args[]) {
..... // !
}
main() C.
2.9 (Modifiers)
JAVA
/ . ` :
<access specifiers> <modifiers> <returned type or class> <method name> (<parameter list) {
<body of the method>
}
modifiers :
final - .
.
, final int a = 10; final int a;
a=10; override.
.
synchronized -
threadsafe. , (
), .
. : ()
, ( ),
.
abstract -
, {...}
semicolon (;). abstract
abstarct. compile-time error (
new) abstract . '
override abstract .
static - /
.
. static
() .
: < >.<static var or method>. : static
static. .
static public static void main(String args[]) ,
.
native - native .
C bytecode
. native javah.
2.10 Casting
C JAVA casting
. :
int a;
short b = 4;
A a;
B b; // B subclass of A
a = (A) b; // B --> A;
a = b;
b = (B) a; // explicit casting is required!
explicit casting
, int (32-bit )
byte (8-bit ).
Java 15
, ( ), explicit
casting
.
2.11 -
() .
(int, float,short ) C.
int a;
short b;
. C
(* & ->) .
.
JAVA
.
A a = new A();
a++; // !!!
int a;
a++; // a int
// .
(
a) , , , (references -
ref) (handlers)
runtime system. runtime system
garbage collection
.
null
.
2.12 (Polymorfism)
.
.
:
(overriding)
(overloading)
(dynamic method binding)
, :
speak() Animal,
( )
. (dynamic method binding)
2.13 (Interfaces)
(interface)
.
.
nterface .
interfaces
interfaces.
interface abstract :
interface
interfaces
interface Java
.
interface
interfaces :
interfaces I
.
public, static, final public
abstract. access modifiers
private protected.
interfaces .
applet thread
:
Java 17
interface.
Runnable interface
interface
.
interfaces
interface
interface.
2.14 (packages)
K (packages)
directory.
directory .
:
package <packageName>;
packages
import <packageName>.<className>;
1:
Folder 1
A11.java
A12.java
// A11.java
// package Folder1:
package Folder1;
class A11
{ Class Implementation..}
// A12.java
// package Folder1:
package Folder1;
class A12
{ class implementation}
2:
Folder 2
A21.java
A22.java
Java 18
// A21.java
// package Folder2:
package Folder2;
class A21
{ Class implementation}
// A22.java
// package Folder2
// 11.java
package Folder2;
import Folder1.A11;
class A22
{ Class implementation}
Java 19
3. - -
3.1 JAVA
JAVA C
( bytes) JAVA.
Byte Byte 8-bit signed, -128..127
Short Short 16-bit signed
Int 32-bit signed
Long 64-bit signed
Float (. 32-bit signed
)
Double 64-bit signed
Char unicode character 16-bit
Boolean Boolean true or false
3.2 , literals, ,
JAVA A..Z,
a..,z, 0..9, _, $, ( ) _ $,
(0..9). JAVA.
literals JAVA , , , .
:
Integer literals ( )
324 // decimal
0xABCD // hexadecimal
032 // octal
2L // long decimal integer
Boolean literals ( )
true, false // boolean
Character literals ()
continuation <newline> \ // character literals
new-line NL (LF) \n
horrizontal tab HT \t
back space BS \b
carriage return CR \r
form feed FF \f
backslash \ \\
single quote ' \'
double quote " \"
octal bit pattern 0ddd \ddd
hex bit pattern 0xdd \xdd
unicode char 0xdddd \udddd
Java 20
String literals ()
"" \\ the empty string
"\""
"This is a string"
"This is a \
two-line string"
JAVA .
1. /* */ C.
2. // //
3. /** */. /* */
javadoc documentation.
(separators) JAVA :
+ - ! % ^ & * | ~ / > <
( ) { } [ ] ; ? : , . =
(SPACE), HT \t, LF \n
.
3.3
:
+
-
*
/
%
^
<=
<
>=
>
!=
== ==
&& KAI (AND)
|| H (OR)
! OXI (NOT)
Java 21
,
s ( ).
.
true
false.
O :
++ 1
-- 1
++ --
1 .
++a; a=a+1;
--a; a=a-1;
++ -- (.
, ++a --a) (. , a++ a--).
++a a .
a++ a .
:
o a 5 :
a = 5;
b = a++;
b 5
b=++a;
b 6. a 6.
+=
-=
*= /
/=
%=
a += b; a = a+b;
a -= b; a = a-b;
a *= b; a = a*b;
a /= b; a = a/b;
a %= b; a = a %b;
bits :
Java 22
& AND bit
| OR bit
^ XOR bit
! bit
<<
>>
bits.
&, |, ^ ~ Boole.
>> << .
a 01101000
b = a >> 2;
b 00011010.
. [] ()
++ -- ! ~ instanceof
* / %
+ -
<< >> >>>
< > <= >=
== !=
&
^
|
&&
||
?:
= op=
,
, *
!=.
.
3.4 (Strings)
char c=A;
(Strings) . Java
String.
String:
println()
System.out.println(ntua); //
print()
System.out.print(National);
System.out.print( Technical );
System.out.println( University );
System.out.println( of );
System.out.println( Athens );
ntuaHMMY :
National Technical University of Athens HMMY Department.
s1 s2.
s1.length(); ( )
s1
s2=s1.toUpperCase(); s1
s2=s1.toLowerCase(); s1
s2.equals(s1) s1 s2
int a=s2.indexOf(s1); To a s2 s1
>>
3.5
C, JAVA
block
,
. ,
( ) C.
Java 24
Java.
(control flow):
Java
if-else
switch-case
for
while
do-while
Java
.
(exceptions) (exception handlers)
.
: break, continue return
. .
Java goto.
break continue.
if-else
if ( )
.
( ).
if :
if ()
..
if (x!=0) {
System.out.println("To x 0");
y = 1/x;
}
if else
.
if if if .
if else :
Java 25
if ()
--1
else
--2
..
if (x!=0) {
System.out.println(" x 0");
y=1/x;
}
else {
System.out.println(" x 0");
y=0;
}
switch-case
if
switch-case :
switch () {
case -1:
-1; [break;]
case -:
-; [break;]
[default:
; [break;]]
}
switch-case
.
- .
default .
break
,
( ) ,
break switch-case.
,
( month) (year) :
...
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
numDays = 31;
break;
case 4:
case 6:
case 9:
case 11:
numDays = 30;
Java 26
break;
case 2:
if ( ((year % 4 == 0) && !(year % 100 == 0))
|| (year % 400 == 0) )
numDays = 29;
else
numDays = 28;
break;
}
...
for
for
. for
.
for .
for :
for (; ; )
;
1
10:
...
for (int i=1; i<=10; i++)
System.out.println(i);
...
i ( for loop)
1.
i 10.
i 10.
i 1. i
1, 2, , 10
i. A i 10
, 1
.
while
for
.
while.
H while :
while ()
;
while .
- boolean -
x numbers.
.
found true .
x.
int i=0;
while (!found && i!=10)
if (numbers[i++] == x)
found = true;
do-while
.
do-while while.
do-while :
do
;
while ();
do-while .
.
H do-while .
,
:
...
int c;
Reader in;
...
do {
c = in.read();
...
} while (c != 1);
...
Java
.
: break, continue return
break switch-case.
break .
while
For.java :
int i;
boolean found = false;
for (i=0; i<10; i++)
if (numbers[i]==x) {
found = true;
break;
}
continue
. for while
do-while .
(true false) .
Java 28
return
,
. -
.
return String
name. getName( )
: return name;
: return interest;
interest;
3.6
JAVA :
< > [] <>;
int[] nums;
byte buff[];
float matrix[][]; //
A a[];
B[] b;
(
).
:
< > = new < > [ <> ];
<> byte, short, int long.
int[] ;
= new int[200];
byte buff[] = new byte[1024];
A[] a = new A[4];
Java 29
float matrix[][];
matrix = new float[30][];
matrix = new float[0][40]; ... matrix = new float[29][40];
:
matrix = new float[30][40];
:
a[2] = 5;
matrix[0][8] = (float) (buff[19] + buff[25]);
indexes 0 -1.
compile-time run-time error.
. :
int[] give_ints() {
int I[] = new int[3];
I[0] = I[1] = I[2] = 7;
return I;
}
void get_ints(int[] i) {
i[0] = i[1]+i[2];
}
JAVA .
()
Array. , JAVA
, ( Array),
.
: int a[]; - a.
a[0], ... int
.
length
. :
a.length //
if (a.length < 1024) {...}
for (int i=0; i<a.length; i++) {
System.out.println(a[i]);
}
Java 30
Java 31
4. (Exceptions)
JAVA ,
,
(throw=) !
thread .
(exception handlers)
.
runtime system,
. ,
. . ( new)
Exception
. throw
exception. throw
.
. , , , ( ),
exception handler, '
.
.
class MyClass {
void oops() {
if (/* no error occurred */) {
...
} else { /* error occurred */
throw new MyException();
}
}
}
(exception handler)
try. try
catch. catch ,
( MyException). catch
. :
try {
p.a = 10;
} catch (NullPointerException e) {
println("p was null");
} catch (Exception e) {
println("other error occurred");
} catch (Object obj) {
println("Who threw that object?");
}
catch .
try/catch.
.
. exception handler
. , ,
, ( ), exception handler,
throw
. throw
.
Java 32
try {
f.open();
} catch(Exception e) {
f.close();
throw e;
}
,
.
finally. .
try {
// do something
} finally {
// clean up after it
}
try {
// do something
} catch(Object e){
// clean up after it
throw e;
}
// clean up after it
try {
if (a == 10) {
return;
}
} finally {
print("finally\n");
}
print("after try\n");
"finally" "after
try" a != 10.
Java 33
5. Applets Java
Java Applets Java WWW Browser.
Applet WEB HTML tag.
Browser WEB Applet, Browser
Applet Web Server .
Java Applets Java Browser,
Browser: , ,
interface . Applets
,
Applets :
Applets ,
.
Applets Server Applet
.
Applets
.
Applets
Applet ,
Applet, java.applet :
Applet Applet
Browser AWT User
Interface , ,
. Applet
, Applet
Applet .
5.1 Applets
Java ,
main(). , main()
. Applets
o Applet (. , , ).
Browser
. Applet Java
. Applet
(
method overriding) Applet .
applet :
1.
public void init(){
...
}
applet
. ,
, font .
2.
public void start(){
...
}
Java 34
Applet :
import java.awt.Graphics
import java.awt.Font
import java.awt.Color
}
}
HelloAgainApplet.class
/classes.
o HTML Applet :
<HTML>
<HEAD>
<TITLE>Applet Alignement </TITLE>
</HEAD>
<BODY>
<P>
<APPLET CODE=HelloAgainApplet.class CODEBASE=classes
WIDTH=300 HEIGHT=70
ALIGN= LEFT VSPACE=60 HSPACE 10>
<PARAM NAME=name VALUE=Bonzo>
Hello to whoever you are
</APPLET>
To the left of this paragraph is and applet of a small string in re type, set in 36 points Times bold.
<BR CLEAR = ALL>
<P>
In the next part of this page, we demonstrate how under certain conditions, styrofoam peanuts can be
used as a healthy snack.
</BODY>
</HTML>
To Web Browser :
HELLO Bonzo!
10 5
60
In the next part of this page, we demonstrate how under certain conditions, styrofoam
peanuts can be used as a healthy snack.
:
Applet ,
string myname name
HTML .
Applet Web tag <APPLET>
BR CLEAR: T </APPLET> tag BR CLEAR
CLEAR (CLEAR=LEFT, CLEAR=RIGHT,
CLEAR=ALL).
Java 36
tags <APPLET>
Applet Web :
CODE: Applet .
CODEBASE: Applet
.
WIDTH HEIGHT:
Applet .
ALIGN: Applet Web.
(LEFT, RIGHT, TOP, TEXTTOP, MIDDLE, ABSMIDDLE, BASELINE, BOTOM,
ABSBOTOM). ALIGN=LEFT Applet
</APPLET>
.
VSPACE HSPACE:
pixels Applet .
PARAM : Applet ,
Name VALUE .
5.3 ,
, Graphics.
,
applet.
(0,0) .
.
0,0 +
5.3.1 Graphics
Graphics
applet .
:
import java.awt.Graphics
drawLine(startX, startY, width, height);
drawRect(startX, startY, width, height);
fillRect(startX, startY, width, height);
drawRoundRect(startX, startY, width, height);
fillRoundRect(startX, startY, width, height);
draw3DRect(startX, startY, width, height, boolean value);
fillRect(startX, startY, width, height, boolean value);
drawPolygon(arrayX, arrayY, array length);
fillPolygon(arrayX, arrayY, array length);
drawPolygon(polygon object);
fillPolygon(polygon object);
drawOval(TopCornerX, TopCornerY, width, height);
Java 37
-
copyArea(fromStartX, fromStartY, fromWidth, fromHeight, toStartX, toStartY);
clearArea(fromStartX, fromStartY, fromWidth, fromHeight, toStartX, toStartY);
:
setFont(fontObject);
strings :
drawString(aString, atPointX, atPointY);
getFont();
setColor(colorObject);
getColor();
5.3.2 Fonts
Fonts
applet . :
import java.awt.Fonts
Font Font
:
Font f = new Font(TimesRoman, Font.BOLD, 24);
Font.PLAIN, Font.BOLD,
Font.ITALIC ( FontBold + FontItalic).
Font :
getName();
getSize();
getStyle();
isPlain;
isBold;
isItalic();
(
, )
FontMetrics ( API Java Decumentation Sun).
5.3.3 Color
Color
applet . :
import java.awt.Color
Color
Color:
Color c = new Color(redValue, greenValue, blueValue);
, , 0 255.
Color
, Color
(Color.white, Color.black, Color.lightGray, Color.gray, Color.darkGray,
Color.red, Color.green, Color.blue, Colror.yellow, Color.magenta, Color.cyan, Color.pink,
Color.orange).
Java 38
5.3.4 - -
applet
) ( ), )
( ) )
( ).
)
import java.awt.Graphics;
)
import java.awt.Font;
import java.awt.Graphics;
Java 39
g.setFont(f);
g.drawString(This is a plain font, 10, 25);
g.setFont(fb);
g.drawString(This is a bold font, 10, 50);
g.setFont(fi);
g.drawString(This is an italic font, 10, 75);
g.setFont(fbi);
g.drawString(This is a bold and italic font, 10, 100);
}
}
)
import java.awt.Graphics;
import java.awt.Color;
g.setColor(new Color(rval,gval,bval));
g.fillRect(I, j, 25, 25);
g.setColor(Color.Black);
g.fillRect(I-1, j-1, 25, 25);
}
}
}
Java 40
Java 41
6. Threads
Java
threads . multithreading languages.
process
() .
process
thread . multithreading
process
threads ( lightweight processes)
. processes
process.
6.1 Threads
SimpleThread TwoThreadsTest:
class TwoThreadsTest {
public static void main (String[] args) {
new SimpleThread("Jamaica").start();
new SimpleThread("Fiji").start();
}
}
simpleThread constructor
string. cunstructor constructors
hread String Thread
.
run. H run
thread thread.
H twoThreads main threads
Jamaica Fiji. H main
thread
start.
To :
0 Jamaica
0 Fiji
1 Fiji
1 Jamaica
2 Jamaica
2 Fiji
3 Fiji
Java 42
3 Jamaica
4 Jamaica
4 Fiji
5 Jamaica
5 Fiji
6 Fiji
6 Jamaica
7 Jamaica
7 Fiji
8 Fiji
9 Fiji
8 Jamaica
DONE! Fiji
9 Jamaica
DONE! Jamaica
. threads,
,
10 . Thread
java.lang
import
6.2 Threads
Thread
run Thread.
Thread
run. (
animation loop
).
run Thread :
Thread (overriding) run
Thread . simpleThread
.
Runnable interface.
Thread -
Runnable interface. To
Threads.
import java.awt.Graphics;
import java.util.Date;
6.4 Threads
H java monitors .
synchnonized monitor.
monitor thread
synchronized . synchronized
thread
synchronized
thread. -synchronized .
synchronized .
thread synchronized
wait().
thread wait monitor
.
Producer/Consumer . Producer
0 9 (),
CubbyHole, .
, o Producer
0 100
. Consumer,
CubbyHole ( Producer
) .
threads , get() put()
CubbyHole.
//*******************************
// Class Producer.java
//*******************************
public class Producer extends Thread {
private CubbyHole cubbyhole;
private int number;
//*
// Class Consumer.java
//*
public class Consumer extends Thread {
private CubbyHole cubbyhole;
private int number;
//*******************************
// Class CubbyHole.java
//*******************************
public class CubbyHole {
private int contents;
private boolean available = false;
wait();
} catch (InterruptedException e) { }
}
available = false;
System.out.println("in get");
notifyAll();
return contents;
}
wait();
} catch (InterruptedException e) { }
}
contents = value;
available = true;
System.out.println("in gut");
notifyAll();
}
}
//*******************************
Java 46
// Class ProducerConsumerTest.java
//*******************************
public class ProducerConsumerTest {
public static void main(String[] args) {
CubbyHole c = new CubbyHole();
Producer p1 = new Producer(c, 1);
Consumer c1 = new Consumer(c, 1);
p1.start();
c1.start();
}
}
To ProducerConsumerTest
:
. . .
Consumer #1 got: 3
Producer #1 put: 4
Producer #1 put: 5
Consumer #1 got: 4
. . .
6.5 Threads
To
thread .
stop,suspend resume
(deprecated) .
(flag) thread
.
born
start
ready
I/O
quantum
dispatch
co
expiration
y
(assign a
tif
ll
yield
pl
A
processor)
no
interrupt
ify
t io
t
n
no
running iss
or
ue
ait I/O
su
w re
ep
qu
sp
es
s le
t
end
sleep interval
expires resume
stop complete
dead
Java 47
Java 47
7.1 GUI
Graphical User Interface-GUI ( )
,
. GUI GUI-components.
GUI-components java.awt (Abstract Windowing
Toolkit) package. Component Container.
Component Component.
Container Container.
GUI-components :
Label .
Button (event) .
TextField . TextField
.
TextArea . TextArea
TextField
.
Choice
.
Checkbox boolean component .
Radio buttons ( ).
List .
action event.
Panel container component
.
ScrollPane container component,
Panel,
Scrollbars component
.
GUI-components
GUI.
java.lang.Object
CheckboxGroup Label
Button
Component TextField
TextComponent
FlowLayout TextArea
Choice
BorderLayout Checkbox
List
GridLayout
Container
Panel java.applet.Applet
Window Frame
ScrollPane
Java 48
Component .
Component paint repaint
Applets.
applet ax2+bx+c=0,
.
init applet
GUI components (TextField, Label, Button, Panel ScrollPane).
// EQuation applet
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
tfD.setEditable(false);
Java 49
tfX1.setEditable(false);
tfX2.setEditable(false);
}
}
Java 50
7.2 GUI
GUIs ( Paint
Windows - GUI , ,
) . , , GUI Java,
Panel components. Panel
Container Applet Panel. Panels
Applets Containers Components, Panel.
Panel .
GUI component hierarchy containment hierarchy.
Panel Components
(layout). Java (Layout Managers)
Component Applet Panel. Layout
Managers :
component hierarchy
Layout Managers.
init .
// 2
p.add(new Label("Factor a"));
p.add(tfA);
p.add(new Label("Determinator D"));
p.add(tfD);
// 3
p.add(new Label("Factor b"));
Java 51
p.add(tfB);
p.add(new Label("Root X1"));
p.add(tfX1);
// 4
p.add(new Label("Factor c"));
p.add(tfC);
p.add(new Label("Root X2"));
p.add(tfX2);
// 5
p.add(new Label(""));
p.add(btSolve);
p.add(btClear);
p.add(new Label(""));
// component hierarchy.
// Panel p ScrollPane sp.
// sp applet.
sp.add(p);
sp.doLayout();
setLayout(new BorderLayout());
add(sp, BorderLayout.CENTER);
applet ( 29).
AdjustmentEvent FocusEvent
java.util.EventObject
ItemEvent PaintEvent
java.awt.AWTEvent
ComponentEvent WindowEvent
Key InputEvent
Class name
Interface name
KeyEvent MouseEvent
Java 52
event :
) (event listener)
events.
B) (event handler) events
.
event listener ,
event-listener interface java.awt.event.
event-listener interfaces java.awt.event.
java.lang.Object ActionListener
AdjustmentListener
java.util.EventListener
ComponentListener
ContainerListener
FocusListener
ItemListener
KeyListener
MouseListener
MouseMotionListener
Key
Class name TextListener
Interface name
WindowListener
,
(event listeners) Buttons Solve
Clear. init
layout component hierarchy.
class Solve implements ActionListener() {
public void actionPerformed(ActionEvent ae) {
try {
double a,b,c,d,x1,x2,sqrtd;
a=(new Double(tfA.getText())).doubleValue();
b=(new Double(tfB.getText())).doubleValue();
c=(new Double(tfC.getText())).doubleValue();
d = b*b-4*a*c;
tfD.setText(Double.toString(d));
if (d>0) {
sqrtd = Math.sqrt(d);
x1 = (-b-sqrtd)/(2d*a);
x2 = (-b+sqrtd)/(2d*a);
tfX1.setText(Double.toString(x1));
tfX2.setText(Double.toString(x2));
} else if (d==0) {
x1 = x2 = -b/(2d*a);
tfX1.setText(Double.toString(x1));
tfX2.setText(Double.toString(x2));
} else {
tfX1.setText("Error");
tfX2.setText("Negative D");
}
} catch (Exception e) {
tfD.setText(e.getMessage());
}
}
}
btSolve.addActionListener(new Solve( ) );
btClear.addActionListener(new Clear( ) );
on the fly
. inline .
components
event
component.
inline - :
inline ,
Buttons Solve Clear :
btSolve.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
try {
double a,b,c,d,x1,x2,sqrtd;
a=(new Double(tfA.getText())).doubleValue();
b=(new Double(tfB.getText())).doubleValue();
c=(new Double(tfC.getText())).doubleValue();
d = b*b-4*a*c;
tfD.setText(Double.toString(d));
if (d>0) {
sqrtd = Math.sqrt(d);
x1 = (-b-sqrtd)/(2d*a);
x2 = (-b+sqrtd)/(2d*a);
tfX1.setText(Double.toString(x1));
tfX2.setText(Double.toString(x2));
} else if (d==0) {
x1 = x2 = -b/(2d*a);
tfX1.setText(Double.toString(x1));
tfX2.setText(Double.toString(x2));
} else {
tfX1.setText("Error");
tfX2.setText("Negative D");
}
} catch (Exception e) {
tfD.setText(e.getMessage());
}
}
});
Java 55
btClear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
tfA.setText("");
tfB.setText("");
tfC.setText("");
tfD.setText("");
tfX1.setText("");
tfX2.setText("");
}
});
7.5 applet EQ
EQ applet
stand-alone
application main( ).
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
p = new Panel();
sp = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
tfD.setEditable(false);
tfX1.setEditable(false);
tfX2.setEditable(false);
p.add(new Label(""));
p.add(btSolve);
p.add(btClear);
p.add(new Label(""));
sp.add(p);
sp.doLayout();
setLayout(new BorderLayout());
add(sp, BorderLayout.CENTER);
btSolve.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
try {
double a,b,c,d,x1,x2,sqrtd;
a=(new Double(tfA.getText())).doubleValue();
Java 57
b=(new Double(tfB.getText())).doubleValue();
c=(new Double(tfC.getText())).doubleValue();
d = b*b-4*a*c;
tfD.setText(Double.toString(d));
if (d>0) {
sqrtd = Math.sqrt(d);
x1 = (-b-sqrtd)/(2d*a);
x2 = (-b+sqrtd)/(2d*a);
tfX1.setText(Double.toString(x1));
tfX2.setText(Double.toString(x2));
} else if (d==0) {
x1 = x2 = -b/(2d*a);
tfX1.setText(Double.toString(x1));
tfX2.setText(Double.toString(x2));
} else {
tfX1.setText("Error");
tfX2.setText("Negative D");
}
} catch (Exception e) {
tfD.setText(e.getMessage());
}
}
});
btClear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
tfA.setText("");
tfB.setText("");
tfC.setText("");
tfD.setText("");
tfX1.setText("");
tfX2.setText("");
}
});
} //end of init() method
eq.init();
eq.start();
p2.setLayout(new FlowLayout(FlowLayout.CENTER));
p2.add(btClose);
fr.setBackground(SystemColor.control);
fr.setLayout(new BorderLayout());
fr.add(eq, BorderLayout.CENTER);
fr.add(p2, BorderLayout.SOUTH);
// fr.pack();
fr.setSize(300, 150);
fr.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
Frame src = (Frame)we.getSource();
Applet appl=(Applet)src.getComponent(0);
appl.stop();
appl.destroy();
src.setVisible(false);
src.dispose();
System.exit(0);
}
});
btClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
System.exit(0);
}
});
fr.setVisible(true);
}
}
Java 59
Jframe JDialog
JApplet
java.awt.Component
Java.awt.Container
java.swing.JComponent
Java 60
Applet
Frame
Dialog
General-Purpose Containers
Container .
Scroll pane
Panel
Tabbed pane
Split pane
Tool bar
Special-Purpose Containers
Container GUI.
Java 61
Internal frame
Layered pane
Root pane
Basic Controls
Component ,
.
List
Slider
Menu
Java 62
Spinner
Text field or Formatted text field
Progress bar
Tool tip
Label
Color chooser
File chooser
Table
Text Tree
Java 63
Swing
Swing :
JFrame
JPanel
JButton
Swing Components . ,
GUI Swing, JFrame
(layout) . JPanels Jframe.
JPanels layout JFrames. ,
Component.
.
import java.lang.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class SimpleGui1 {
public static void main(String args[]) {
// Let's make a button first.
JButton btn = new JButton("Click Me!");
btn.setMnemonic(KeyEvent.VK_C); // Now you can hit the button with
// Alt-C.
import java.lang.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class SimpleGui1 {
public static void main(String args[]) {
// Let's make a button first.
JButton btn = new JButton("Click Me!");
btn.setMnemonic(KeyEvent.VK_C); // Now you can hit the button with
// Alt-C.
}
. , ,
:
swing thread-safe.
Swing thread
Java 66
event-dispatching thread.
event handler event handler.
(deadlock), Swing components
, event-
dispatching thread.
8.3.1 invokeLater
invokeLater thread event-dispatching
thread .
run Runnable Runable
invokeLater. invokeLater
event-dispatching thread.
invokeLater:
GUI event-dispatching thread invokeLater.
Swing
GUI event-dispatching thread
invokeLater. invokeLater invokeAndWait
import java.lang.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class SimpleGui1 {
}
Java 68
Java 69
9. Animation Java
9.1 Animation
Java
Java applet , animation.
animation
.
animation.
animation:
1. multi-frame animation.
(frames) (
animation 10-20 frames
).
(cartoons).
2. .
( sprite)
(background). .
sprite frames,
background. ,
, (sprite) (transparent) background
.
format GIF 89 Compuserve.
9. 2 animation loop
animation ,
(animatin loop),
animation. Java
thread.
paint() update() java.awt.Component
, AWT
thread
(event handling) . animation loop
run() thread
animation. paint() frame
( ).
animation loop.
frameNumber, frame
( frame)
delay, msec ( )
frames.
frame animation loop, repaint()
java.awt.Component. paint() (
paint() frame) frame.
// .
repaint();
// delay msec.
try {Thread.sleep(delay); } catch (InterruptedException e) {}
9.3. animation
Applet multi-frame
animation, animation loop
. ,
Java animation. .
import java.awt.*;
import java.applet.Applet;
// Thread animation
Thread animatorThread;
// animation loop.
public void run() {
//animation loop
Java 71
// frame
frameNumber++;
// frame
repaint();
// msec
try {Thread.sleep(delay) }
catch (InterruptedException e) { break; }
}
}
// paint() frame.
public void paint(Graphics g) {
// string
// frame
g.drawString("Frame " + frameNumber, 0, 30);
// , frame
}
9.4.
animation:
Frame i, i frame.
,
. string ( string
- ),
.
flashing flickering
(smooth, flicker free) animation.
screen flickering :
repaint() animation loop, frame,
repaint(), background
paint() . ,
background frame
(refresh rate) .
(
background frame)
( frame , ,
background).
animation
flickering (smooth) animation.
update().
Abstract Windowing Toolkit (AWT) package Java
(Applet, Canvas, Frame) update()
Java 72
. , update() clearRect()
background paint()
.
update() : background
.
animation loop flickering.
background
frame. update()
paint() ( background). ,
update frame, -
frame.
buffer
.
(offscreen) frame o
.
frame , frame
frame .
frame , . ,
frame . Java, buffer
(offImage) Image
createImage() java.awt.Component.
, Graphics (offGraphics)
Image getGraphics().
, update()
. frame
drawImage()
update().
Applet
smooth animation.
:
import java.awt.*;
import java.applet.Applet;
Dimension offDimension;
Image offImage;
Graphics offGraphics;
Image[] images;
// milliseconds frames;
str = getParameter("fps");
try {
Java 73
if (str != null) {
fps = Integer.parseInt(str);
}
} catch (Exception e) {}
delay = (fps > 0) ? (1000 / fps) : 100;
// .
images = new Image[10];
for (int i = 1; i <= 10; i++) {
//
images[i-1] = getImage(getCodeBase(),
"myimage"+i+".gif");
}
}
//
//
offGraphics = null;
offImage = null;
}
// animating thread.
animatorThread = null;
}
return true;
}
//
long startTime = System.currentTimeMillis();
//animation loop.
while (Thread.currentThread() == animatorThread) {
frameNumber++;
repaint();
//
try {
startTime += delay;
Thread.sleep(Math.max(0,
startTime-System.currentTimeMillis()));
} catch (InterruptedException e) {
break;
}
}
}
// update()
//
// background .
// backround
// frame.
//
//
public void update(Graphics g) {
Dimension d = size();
//
if ( (offGraphics == null)
|| (d.width != offDimension.width)
|| (d.height != offDimension.height) ) {
offDimension = d;
offImage = createImage(d.width, d.height);
offGraphics = offImage.getGraphics();
}
// frame,
offGraphics.setColor(getBackground());
offGraphics.fillRect(0, 0, d.width, d.height);
offGraphics.setColor(Color.black);
// frame
offGraphics.drawImage(images[frameNumber % 10], 0, 0, this);
//
g.drawImage(offImage, 0, 0, this);
}
Java 75
}
Java 75
10. / - Streams
,
, , , ,
. ( ),
( ) .
10.1
Java,
, , ( file system )
( device ), Streams. stream .
, .
Java streams,
. streams / InputStream
OutputStream, .
streams DataInputStream DataOutputStream
, , -
Java , (
) . ,
- Java. , DataInputStream
DataOutputStream Unicode ( string ),
UTF-8.
streams, ( file
buffers ),
, / ( / ).
BufferedInputStream BufferedOutputStream (
) .
buffered stream, buffer
stream. , ,
flush buffers,
buffer ( file system ). ,
file system,
FileInputStream FileOutputStream ,
.
10.2 System
Java applet ,
import , System.
, /.
System.in, InputStream
stream ( ).
stream
, , modem,
.
stream ,
.
strings, ( integer ) ,
bytes. string :
10.3 System
, streams.
,
, standard output,
. monitor, , ,
, . System
System.out OutputStream. To ,
, standard output.
System.out.println(str);
}
:
applet, .. Netscape Navigator, standard Java
Console Netscape, ,
( command line ).
10.4 DataInputStream
DataInputStream.
Constructor :
:
in - input stream.
read(byte[])
byte.length bytes data input stream,
bytes
readBoolean()
boolean data input stream.
readByte()
8-bit data input stream.
Java 77
readChar()
Unicode data input stream.
readFloat()
float data input stream.
readInt()
32-bit ( integer ) data input stream.
readLine()
data input stream.
readLong()
64-bit ( integer ) data input stream.
10.5 DataOutputStream
DataOutputStream.
Constructor :
:
out - output stream.
flush()
, . output
stream. buffer.
size()
bytes data output stream.
writeChar(int)
stream 2-byte ,
byte, .
writeDouble(double)
double long
doubleToLongBits Double long
stream 8-byte , byte,
.
writeInt(int)
( int ) stream bytes,
byte, .
Java 78
11. Java
( ) URL,
, URLs
. URL
... Internet : http://www.ntua.gr .
URL, , :
To protocol identifier ,
. , http
( hypertext documents ). ftp
, news , file gopher.
Internet. H
,
:
host : .
( filename ) : , host.
( port number ) : (
).
( reference ) : .
, ,
. To java.net URL,
URL .
http://www.gamelan.com/pages/Gamelan.game.html
http://www.gamelan.com/pages/Gamelan.net.html
URL
URL: http://www.gamelan.com/pages/ :
snippet URL
URL URL ( )
specification URL. :
URL URL.
String resource
. URL ,
() URL URL specification. ,
URL URL specification
URL.
URL (anchors) .
Gamelan.net.html
BOTTOM .
URL, URL :
11.1.2 URL
class URL URL .
URL, HTTP
URLs, host, ,
resource name portion URL.
string URL specification,
URL.
new URL("http://www.gamelan.com/pages/Gamelan.net.html");
, host
path . forward
slash . host.
Java 80
URL
:
URL URL:
http://www.gamelan.com:80/pages/Gamelan.net.html
URL
, toString() toExternalForm()
URL, String .
11.1.3 MalformedURLException
URL MalformedURLException
. ,
URL try/catch pair, :
try {
URL myURL = new URL(. . .)
} catch (MalformedURLException e) {
...
// exception handler code here
...
}
11.1.4 URL
URL, ()
, :
getProtocol()
String .
getHost()
String host.
getPort()
(integer) (port).
port number URL -1.
getFile()
String filename.
getRef()
URL.
getXXX ,
URL
URL.
URL class, ,
URLs. ,
Java 81
URL
.
URL string
URL:
import java.net.*;
import java.io.*;
protocol = http
host = java.sun.com
filename = /docs/books/tutorial/intro.html
port = 80
ref = DOWNLOADING
11.1.5 URL
URL, openStream()
stream, .
, openStream() , Java.io.InputStream ,
URL, ,
streams, streams.
, .
,
HTML.
import java.net.*;
import java.io.*;
class OpenStreamTest {
public static void main(String args[]) {
try {
DataInputStream in = new DataInputStream(System.in);
DataInputStream dis;
String inputLine;
String address;
dis.close();
} catch (MalformedURLException me) {
System.out.println("MalformedURLException: "+ me);
} catch (IOException ioe) {
System.out.println("IOException: " + ioe);
}
} // End of main()
} // End of class
, , ,
URL, ( query ),
cgi-script.
11.1.6 URL
URL
openConnection. ,
Java URL .
... :
try {
URL ntua = new URL("http://www.ntua.gr");
ntua.openConnection();
} catch (MalformedURLException e) { // new URL() failed
...
} catch (IOException e) { // openConnection() failed
...
}
openConnection URLConnection,
, , URL
URLConnection. ,
openConnection .
11.1.7 URLConnection
input stream URL,
(connection) URL input stream ,
.
BufferedReader input stream, .
import java.net.*;
import java.io.*;
in.close();
}
}
URLConnection
URL
URLConnection .
11.1.8 URLConnection
HTML ,
(server).
, Web browser URL ,
cgi-bin script, , (server) ,
, HTML .
cgi-bin scripts POST
, URL posting
url. Java cgi-scripts
, URL,
. :
URL.
URL.
URLConnection.
(stream) . stream
stream cgi-bin script .
stream .
stream .
import java.io.*;
import java.net.*;
if (args.length != 1) {
System.err.println("Usage: java Reverse string_to_reverse");
System.exit(1);
}
out.println("string=" + stringToReverse);
out.close();
in.close();
}
}
if (args.length != 1) {
System.err.println("Usage: java Reverse " +
"string_to_reverse");
System.exit(-1);
}
String stringToReverse = URLEncoder.encode(args[0]);
. string cgi-bin
script backwards. .
, string
server. URLEncoder.
, URL, URLConnection
.
(stream)
PrintWriter :
URL , getOutputStream :
UnknownServiceException. URL ,
(stream) standard URL
(server).
.
, (stream)
.
out.println("string=" + stringToReverse);
out.close();
(stream) println.
, URL
(stream). (stream)
backward script
. Reverse
script string string
.
Java 85
Reverse Me
reversed is:
eM esreveR
Java 86
11.2 Sockets
- ( client - server ). ,
-
, -, .
, :
- .
, , -
.
- , ,
,
. , ,
, ( .. ,
, mail ).
, server
.
, ,
.
, .
, :
{ , -, -, -,
- }
.
- -, -
, .
- -,
, ,
.
host , 16-bit
, ( port number ) ,
.
, ( half association ), { , -
, - }, { , -,
- }. socket.
O : Socket , ,
. ,
.
socket,
file system. sockets :
,
.
UDP (Unreliable Datagram Protocol ) socket
( connectionless service ). To ,
, :
, (
) .
, , TCP sockets
:
. UDP socket .
,
. , TCP socket
( handshake packets )
UDP datagrams.
.
, Java, Socket
TCP sockets, ,
UDP sockets, Datagram.
sockets
java.net .
/
Socket TCP -
ServerSocket CP -
DatagramSocket UDP ( client & server )
DatagramPacket UDP
netAddress Internet Protocol (
IP )
URL Uniform Resource Locator
URLConnection
web.
, (
echo service ). TCP sockets 7,
, , ,
. . , .
,
, ,
, 8205.
O ( client )
client
:
Socket() - server
getInputStream() - socket
getOutputStream() / Java, . streams
read() write() - -
Java 88
socket - stream
.. - /
close() - socket
.
,
.
Socket, , ,
(!) ( constructors ) .
:
. s, socket
(args[0] - ,
, command line,
).
, streams /
socket , /. ,
, ( ) / Java
streams. , getInputStream()
getOutputStream() Socket, :
streams socket, /
streams. .. :
sout.println(Hello); // socket
String message = sin.readLine(); //
// socket
socket s,
, , port.
System.out.println(Connected to +
s.getInetAddress() + : + s.getPort());
/, socket ,
, ( file handlers ),
.
...
finally {
try {
if ( s != null) s.close();
} catch(IOException ioe) {
;
}
}
client echo :
import java.io.*;
import java.net.*;
while(true) {
line = "";
try {
// Create the socket to communicate with "echo"
// on the specified host
s = new Socket(args[0], 8205);
} catch(IOException e) {
System.out.println(e);
}
} // End of class
,
socket streams , try
,
IOException. ,
/ socket.
, close() ,
finally.
( server )
TCP - / port
-,
. port server
-,
. server port socket ,
, . . , socket
listening socket.
, .
, ,
- , . ,
.
EchoClient,
: EchoServer, listening-socket
EchoThread, Thread Java.
EchoServer
, .
server :
ServerSocket java.net
TCP socket, ,
client/server .
,
.
,
. , .
:
, server
:
accept() ,
listening-socket, . .
, accept() Socket ( listening-socket )
.
listening socket ,
( well-known ). ,
EchoThread :
thread socket
accept(), , , streams / :
DataInputStream in =
new DataInputStream(s.getInputStream());
PrintStream out =
new PrintStream(s.getOutputStream());
/ socket ( streams ), /
. , thread socket
accept ( close() ) . listening socket
, EchoServer.
try,
( socket ),
.
echo,
.
import java.net.*;
import java.io.*;
import java.lang.*;
import java.util.*;
{
public static void main(String args[])
{
// initialize the network connection
try {
ServerSocket serversoc = new ServerSocket(8205);
while (true) {
// accept the message
Socket incoming = serversoc.accept();
} // End of main
// Our constructor
EchoThread(Socket s)
{
this.s = s;
}
try {
// Create streams for reading / writing lines of text to the socket
DataInputStream in =
new DataInputStream(s.getInputStream());
PrintStream out =
new PrintStream(s.getOutputStream());
// Print a message:
System.out.println("Client from : " +
s.getInetAddress() + " port " + s.getPort());
System.out.println(st);
// If the input was 'quit' then exit...
if (st.equals("quit")) {
finished = true;
System.out.println("Thread exiting...");
}
}
} catch (IOException e) {
System.out.println("Error : " + e.getMessage());
}
11.2.3 M Socket
, ,
Socket.
Socket(InetAddress, int)
stream ( TCP ) socket port
.
Socket(String, int)
stream ( TCP ) socket port host,
.
close()
socket ( ).
getInetAddress()
host socket
.
getInputStream()
stream socket.
getLocalAddress()
host socket (
).
getLocalPort()
( ) host socket
.
getOutputStream()
stream socket
getPort()
host socket
Java 94
11.2.4 ServerSocket
, ,
ServerSocket.
ServerSocket(int)
server socket
. 0,
( ) .
ServerSocket(int, int)
server socket
,
port, , . , 0
.
accept()
server socket .
close()
server socket.
getInetAddress()
server socket.
getLocalPort()
port server socket .
11.2.5 Datagrams
TCP sockets,
, UDP Datagrams
peer-to-peer, . .
.
, ,
.
, , , , , TCP sockets
( ,
),
datagrams, ( packets )
. , TCP sockets ,
, , ,
, UDP datagrams, , ,
host- . ,
. datagram
:
: Datagram , ( .
) , ,
.
Java 95
,
, , TCP
sockets. , PING,
. , PING
,
. TCP,
.
,
, UDP datagrams. ,
( ),
,
, .
UDP , :
, o TimeClient,
host, . TimeServer
, host.
8505 ,
.
: DatagramSocket,
UDP datagrams DatagramPacket,
.
host
TimeServer.
(.. #java TimeClient 127.0.0.1
127.0.0.1 default
localhost). To
InetAddress, getByName(String),
InetAddress :
datagram socket,
. :
, port
, datagram socket.
, datagram socket streams
/, / ,
.
. DatagramPacket,
4 : buffer,
bytes ( String array ),
, InetAddress ,
. TimeServer, buffer
, .
DatagramPacket packet;
Java 96
, , send(DatagramPacket) datagram
socket :
serversoc.send(packet);
receive(DatagramPacket) datagram socket.
serversoc.receive(packet);
receive() , datagram
port datagram socket. ,
UDP .
,
, .
, getData() DatagramPacket,
bytes , String .
getInetAddress() getPort()
, . ,
, . DatagramSocket().
TimeClient :
import java.io.*;
import java.net.*;
try {
// construct the packet with all the information
// needed
packet = new DatagramPacket(message, 256, hostaddress, port);
} // End of main()
} // End of class
try,
.
server client.
. , ,
,
,
.
datagram packet, 8Bytes. UDP datagrams,
, ,
.
Java 98
, ,
datagram socket, :
DatagramSocket port ( . 8505 ), socket,
. :
import java.io.*;
import java.net.*;
import java.util.*; // For the date functions...
// Send it!
s.send(packet);
} catch (Exception e) {
System.out.println("Error : " + e.toString());
} //End of while
System.out.println("Client served...");
}
} // End of main()
11.2.7 M DatagramSocket
DatagramSocket()
datagram socket port,
host.
DatagramSocket(int)
datagram socket
, host.
DatagramSocket(int, InetAddress)
datagram socket .
SocketException ,
.
close()
datagram socket.
getLocalAddress()
Gets the local address to which the socket is bound.
, socket .
getLocalPort()
, socket
.
receive(DatagramPacket)
datagram socket.
send(DatagramPacket)
datagram socket.
11.2.8 M DatagramPacket
DatagramPacket(byte[], int)
DatagramPacket,
. buffer
.
DatagramPacket(byte[], int, InetAddress, int)
datagram packet .
bytes, ,
Java
100
getAddress()
, datagram ,
.
getData()
, .
getLength()
, .
getPort()
host,
, host, .