- 浏览: 136120 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
aa87963014:
很好,但是update/insert 是否加锁 。加锁对sel ...
数据库锁 -
RobustTm:
我的这种做法也可以添加A和B
但是换成更新就有问题
hibernate入门(十一):级联操作inversin属性 -
RobustTm:
这位仁兄可以提供一对多双向关联完整的代码不?
我碰到了问题,采 ...
hibernate入门(十一):级联操作inversin属性 -
cfeers:
markxing 写道谢谢分享。。。
不客气,呵呵。
struts2.0 struts.xml配置文件详解 -
markxing:
谢谢分享。。。
struts2.0 struts.xml配置文件详解
第十章 网络编程
1. 参考模型:
OSI 参考模型 :应用层,表示层,会话层,传输层,网络层,数据链路层,物理层
TCP/IP参考模型:应用层 传输层 网络层 物理+数据链路层
2.IP: 提供了独一无二唯一的IP地址。
3.TCP协议和UDP协议:
(1)TCP(transmission control protocol) 可靠的(慢)
是专门用于在不可靠的因特网上提供可靠的、端到端的字节流通信的协议,他是一种面向连接的协议,TCP连接是字节流而非报文流。 银行ATM
(2)UDP(user data protocol) 不可靠的(快)
UDP向应用程序提供了一种发送封装的原始IP数据报的方法、并且发送时无需建立连接,是一种不可靠的连接。 CS
4.Sockct 先启动Server 再启动Clinet
两个Java应用程序可通过一个双向的网络通信连接实现数据交换,这个双向链路的一端称为一个Socket。
Socket 通常用来实现client-server 连接。
Java.net 包中定义的两个类Socket 和 ServerSocket,分别用来实现双向连接的client和server端。
建立连接时所需的寻址信息为原创计算机的IP地址和端口号(Port number)
TCP端口
UDP端口 每一个65536个端口
程序1:TCPClient.java
import java.net.*;
import java.io.*;
public class TCPClient{
public static void main(String[] args)throws Exception{
Socket s = new Socket("127.0.0.1",6666); //指定IP地址,连接到Server端(本机),指向6666端口(Server),Client端口系统默认
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("Hello Server!");
dos.flush();
dos.close();
s.close();
}
}
TCPServer.java
import java.net.*;
import java.io.*;
public class TCPServer{
public static void main(String[] args)throws Exception{
ServerSocket ss = new ServerSocket(6666); //监听6666端口
while(true){
Socket s1 = ss.accept(); //和Client建立一个连接,接受Client端,s1专门与Client的s进行连接,
Thread.sleep(3000);//睡眠3秒钟
System.out.println("A client connection");//输出连接成功
DataInputStream dis = new DataInputStream(s1.getInputStream());
System.out.println(dis.readUTF());
dis.close();
s1.close();
}
}
}
TCP Socket 通信模型
程序2:点对点聊天程序 TtServer.java
import java.io.*;
import java.net.*;
public class TServer{
public static void main(String[] args){
try{
ServerSocket server = null;
try{
server = new ServerSocket(8899);
}catch(Exception e){e.printStackTrace();}
Socket socket = null;
try{
socket = server.accept();
}catch(Exception e){e.printStackTrace();}
String line;
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter os = new PrintWriter(socket.getOutputStream());
BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Client:" + is.readLine());
line = sin.readLine();
while(!line.equals("bye")){
os.println(line);
os.flush();
System.out.println("服务器端(Server):" + line);
System.out.println("客户端(Client):" + is.readLine());
line = sin.readLine();
}
is.close();
os.close();
socket.close();
server.close();
}catch(Exception e){System.out.println("出错了,你没有用Bye退出"+ e);}
}
}
TClient.java
import java.io.*;
import java.net.*;
public class TClient{
public static void main(String[] args){
try{
Socket socket = new Socket("127.0.0.1",8899);
BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
PrintWriter os = new PrintWriter(socket.getOutputStream());
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String readline;
readline = sin.readLine();
while(!readline.equals("bye")){
os.println(readline);
os.flush();
System.out.println("客户端(Client):" + readline);
System.out.println("服务器端(Server):" + is.readLine());
readline = sin.readLine();
}
os.close();
is.close();
socket.close();
}catch(Exception e){e.printStackTrace();}
}
}
UDP :不可靠的,效率高,数据报/非连接 (音频,视频)
DatagramPacket: 数据报包
DatagramSocket:: 用来发送和接收数据报包的套接字
------------------------------------------------------------------------------------------------------------------
例如:TestUDPClient.java
import java.net.*;
public class TestUDPClient{
public static void main(String[] args)throws Exception{
byte[] buf = (new String("Hello")).getBytes(); //new一个字符串”Hello“,返回baye类型,把一个字符串解析为一个字节数组
DatagramPacket dp = new DatagramPacket(buf,buf.length,
new InetSocketAddress("127.0.0.1",5678)); //通过buf字节数组,把所有内容、//发出去,InetSocketAddress继承于 SocketAddress(包含IP端口的地址),(多态)
// 发送到 127.0.0.1的5678端口
DatagramSocket ds = new DatagramSocket(9999); //我用9999向5678发送数据
ds.send(dp); //发送数据报包,对方收到了!
ds.close(); //关闭
}
}
import java.net.*;
public class TestUDPServer{
public static void main(String[] args) throws Exception{
byte buf[] = new byte[1024]; //定义一个byte数组,内存分配1024字节空间
DatagramPacket dp = new DatagramPacket(buf, buf.length); //定义一个数据报包,接受UDP的数据,实际是存在buf里面,占用整个buf空间
DatagramSocket ds = new DatagramSocket(5678); //占用udp的5678端口
while(true){
ds.receive(dp); //开始收数据,把包袱传进来,只要有人发数据,把数据仍包袱里面。(阻塞式的方法)
System.out.println(new String(buf,0,dp.getLength())); //String的构造方法,打印包袱里面所收的数据,可以知道到底收了多少个数据;从0开始到长度,打印出来。
}
}
}
发表评论
-
电信系统架构方案(转自CSDN)
2011-03-03 19:51 800电信系统架构方案(转自CSDN) 撰文/青润(本文来自《程 ... -
抽象类 Abstract class
2010-09-11 17:08 775抽象类表示抽象概念, ... -
面向对象之封装
2010-09-11 17:05 805隐藏复杂性,是我们人 ... -
Java的内存管理机制
2010-09-11 16:59 906一般分成四块 Heap,stack,data segment ... -
继承的一个例子
2010-09-11 16:58 699abstract class Person{ pri ... -
java 构造方法
2010-09-11 16:54 923构造方法是一种特殊的方法,与一般的方法不同是: 1.构造方法 ... -
java 继承和接口
2010-09-11 16:52 716如果父类是抽象类,并且有抽象方法,那么子类必须重写父类的抽象方 ... -
java的异常学习
2010-09-11 16:50 689java异常学习 Java把异常 ... -
throw和throws的区别
2010-09-11 16:50 829【下面给个例子】======================= ... -
java的基本语法(六)
2010-09-11 16:47 943线程的一些笔记,入门。 ... -
java的基本语法(五)
2010-09-11 16:46 667自己摘录的,难免有错 ... -
java的基本语法(四)
2010-09-11 16:45 600自己记得一些笔记: ... -
java的基本语法(三)
2010-09-11 16:44 795一些java里面的常用类。 ... -
java的基本语法(二)
2010-09-11 16:42 654自学java语法时的一些笔记, 数组 :是个引用类型, ... -
java的基本语法(一)
2010-09-11 16:36 858下面这些是我自学JAVA的时候摘录的一些笔记,给大家参考一下。 ...
相关推荐
Java基本语法.pdf
Java基本语法大全
含有Java的基本信息和基本语法,适合开发小白下载学习
Java基本语法
Java基本语法编程练习.doc Java基本语法编程练习.doc Java基本语法编程练习.doc
JAVA的基本语法及48个关键字! chm文档! 找了好久都找不到,只好自己做一个了! 分享一下...
java基本语法大全 非常好用,详细地介绍了java语法特点,还有丰富的实例
实验一_JDK编程环境和Java基本语法.doc 实验一_JDK编程环境和Java基本语法.doc 实验一_JDK编程环境和Java基本语法.doc
java基本语法笔记java基本语法笔记java基本语法笔记
JAVA语法大全,JAVA的基本语法,JAVA关键字,一元数组 ,多元数组,循环语法包括4种循环,
Java基本语法.ppt 让读者对数据类型、表达式等Java基本语法内容有一个了解,这些内容是任何一门程序设计语言都必须包含的部分,可为程序设计打基础
java初级语法测试题,
java零基础自学 之 java基本语法 java零基础自学 之 java基本语法
JAVA基本语法JAVA基本语法JAVA基本语法JAVA基本语法JAVA基本语法JAVA基本语法
学习Java时整理的Java基本语法第一季
JAVA 基本语法实例
JAVA基础语法总结,希望对入java入门有所帮助!
java 基本语法总结 ppt 基本语法 io流 list map thread等
JavaSE阶段,基本语法部分的思维导图,学习Java对于新人来说本来就比较难,我在这里自己把基本语法部分的知识点都进行了一个串联,做成了一个思维导图,可供初学者以及备考学生进行参考
Java的基本语法的笔记