java基础之 网络和socket
2013-03-17 17:28
211 查看
四、网络的基础知识:
1、ip:主机在网络中的唯一标识,是一个逻辑地址。
127.0.0.1 表示本机地址。(没有网卡该地址仍然可以用)
2、端口:端口是一个软件抽象的概念。如果把Ip地址看作是一个电话号码的话,端口就相当于分机号。
进程一定要和一个端口建立绑定监听关系。端口号占两个字节。
3、协议:通讯双方为了完成预先制定好的功能而达成的约定。
4、TCP/IP网络七层模型:
物理层Physical(硬件)、 数据链路层DataLink(二进制) 、网络层Network(IP协议:寻址和路由)
传输层Transport(TCP协议,UDP协议) 、会话层Session(端口)
表示层Presentation、应用层Application(HTTP,FTP,TELET,SMTP,POPS,DNS)
注:层与层之间是单向依赖关系。对等层之间会有一条虚连接。Java中的网络编程就是针对传输层编程
5、网络通信的本质是进程间通信。
6、Tcp协议和UDP协议
TCP:开销大,用于可靠性要求高的场合。TCP的过程相当于打电话的过程。面向连接,可靠,低效
UDP:用在对实时性要求比较高的场合。UDP的过程相当于写信的过程。无连接,不可靠,效率高
五、网络套节字Socket(TCP)
1、一个Socket相当于一个电话机。
OutputStream相当于话筒
InputStream相当于听筒
2、服务器端要创建的对象:java。Net。ServerSocket
3、创建一个TCP服务器端程序的步骤:
1). 创建一个ServerSocket
2). 从ServerSocket接受客户连接请求
3). 创建一个服务线程处理新的连接
4). 在服务线程中,从socket中获得I/O流
5). 对I/O流进行读写操作,完成与客户的交互
6). 关闭I/O流
7). 关闭Socket
/***********************************************************/
import java.net.*;
import java.io.*;
public class TcpServer{//服务器端
public static void main(String[] args) {
ServerSocket ss = null;
Socket s = null;
try{ ss= new ServerSocket(10222);
s = ss.accept();//客户端连上后返回Socket,监听端口
OutputStream os = s.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.println("欢迎欢迎!");//要换行,否则不能读取
pw.flush();//从内存输出去
}catch(Exception e){}
finally{if(s!=null )try{s.close(); }catch(Exception e){}
if(ss!=null)try{ss.close();}catch(Exception e){}
}}}
public class TcpClient {//接受端
public static void main(String[] args) throws Exception {
Socket s = new Socket("10.3.1.79", 10222);
BufferedReader br = new BufferedReader(new InputStreamReader
(s.getInputStream()));
System.out.println(br.readLine());
s.close();
}}
/***********************************************************/
4、建立TCP客户端
创建一个TCP客户端程序的步骤:
1). 创建Socket
2). 获得I/O流
3). 对I/O流进行读写操作
4). 关闭I/O流
5). 关闭Socket
5、网络套节字Socket(UDP)
1.UDP编程必须先由客户端发出信息。
2.一个客户端就是一封信,Socket相当于美国式邮筒(信件的收发都在一个邮筒中)。
3.端口与协议相关,所以TCP的3000端口与UDP的3000端口不是同一个端口
6、URL:统一资源定位器
唯一的定位一个网络上的资源
如:http://www.sina.com.cn
/***下载程序**************************************************************/
import java.net.*;
import java.io.*;
class TestUrl{
public static void main(String[] args) throws Exception{
String str = "http://192.168.0.23:8080/project_document.zip";
URL url = new URL(str);//上句指定下载的地址和文件
URLConnection urlConn = url.openConnection();
urlConn.connect();
InputStream is = urlConn.getInputStream();
FileOutputStream fos = new FileOutputStream("/home/down.zip");
byte[] buf = new byte[4096]; //上句指定下载的地址和下载后的名称
int length = 0;
while((length=is.read(buf))!=-1){
fos.write(buf, 0, length);
}
fos.close();
is.close();
}}
/***************************************************************************/
1、ip:主机在网络中的唯一标识,是一个逻辑地址。
127.0.0.1 表示本机地址。(没有网卡该地址仍然可以用)
2、端口:端口是一个软件抽象的概念。如果把Ip地址看作是一个电话号码的话,端口就相当于分机号。
进程一定要和一个端口建立绑定监听关系。端口号占两个字节。
3、协议:通讯双方为了完成预先制定好的功能而达成的约定。
4、TCP/IP网络七层模型:
物理层Physical(硬件)、 数据链路层DataLink(二进制) 、网络层Network(IP协议:寻址和路由)
传输层Transport(TCP协议,UDP协议) 、会话层Session(端口)
表示层Presentation、应用层Application(HTTP,FTP,TELET,SMTP,POPS,DNS)
注:层与层之间是单向依赖关系。对等层之间会有一条虚连接。Java中的网络编程就是针对传输层编程
5、网络通信的本质是进程间通信。
6、Tcp协议和UDP协议
TCP:开销大,用于可靠性要求高的场合。TCP的过程相当于打电话的过程。面向连接,可靠,低效
UDP:用在对实时性要求比较高的场合。UDP的过程相当于写信的过程。无连接,不可靠,效率高
五、网络套节字Socket(TCP)
1、一个Socket相当于一个电话机。
OutputStream相当于话筒
InputStream相当于听筒
2、服务器端要创建的对象:java。Net。ServerSocket
3、创建一个TCP服务器端程序的步骤:
1). 创建一个ServerSocket
2). 从ServerSocket接受客户连接请求
3). 创建一个服务线程处理新的连接
4). 在服务线程中,从socket中获得I/O流
5). 对I/O流进行读写操作,完成与客户的交互
6). 关闭I/O流
7). 关闭Socket
/***********************************************************/
import java.net.*;
import java.io.*;
public class TcpServer{//服务器端
public static void main(String[] args) {
ServerSocket ss = null;
Socket s = null;
try{ ss= new ServerSocket(10222);
s = ss.accept();//客户端连上后返回Socket,监听端口
OutputStream os = s.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.println("欢迎欢迎!");//要换行,否则不能读取
pw.flush();//从内存输出去
}catch(Exception e){}
finally{if(s!=null )try{s.close(); }catch(Exception e){}
if(ss!=null)try{ss.close();}catch(Exception e){}
}}}
public class TcpClient {//接受端
public static void main(String[] args) throws Exception {
Socket s = new Socket("10.3.1.79", 10222);
BufferedReader br = new BufferedReader(new InputStreamReader
(s.getInputStream()));
System.out.println(br.readLine());
s.close();
}}
/***********************************************************/
4、建立TCP客户端
创建一个TCP客户端程序的步骤:
1). 创建Socket
2). 获得I/O流
3). 对I/O流进行读写操作
4). 关闭I/O流
5). 关闭Socket
5、网络套节字Socket(UDP)
1.UDP编程必须先由客户端发出信息。
2.一个客户端就是一封信,Socket相当于美国式邮筒(信件的收发都在一个邮筒中)。
3.端口与协议相关,所以TCP的3000端口与UDP的3000端口不是同一个端口
6、URL:统一资源定位器
唯一的定位一个网络上的资源
如:http://www.sina.com.cn
/***下载程序**************************************************************/
import java.net.*;
import java.io.*;
class TestUrl{
public static void main(String[] args) throws Exception{
String str = "http://192.168.0.23:8080/project_document.zip";
URL url = new URL(str);//上句指定下载的地址和文件
URLConnection urlConn = url.openConnection();
urlConn.connect();
InputStream is = urlConn.getInputStream();
FileOutputStream fos = new FileOutputStream("/home/down.zip");
byte[] buf = new byte[4096]; //上句指定下载的地址和下载后的名称
int length = 0;
while((length=is.read(buf))!=-1){
fos.write(buf, 0, length);
}
fos.close();
is.close();
}}
/***************************************************************************/
相关文章推荐
- Java网络基础,Socket通信基础
- Java Socket网络编程基础
- Java网络编程基础(二)-- 基于TCP/IP的Socket编程
- java实现最基础的socket网络通信
- Java基础知识强化之网络编程笔记02:Socket通信原理图解
- java实现最基础的socket网络通信
- 黑马程序员-java网络编程基础——socket编程基础
- 【幻化万千戏红尘】qianfengDay23-java基础学习:网络编程、TCP IP协议、端口Socket、ServerSocket
- Java网络编程基础教程之Socket入门实例
- 基于Socket的Java网络编程集粹-Java基础-Java-编程开发
- java网络socket编程(一)之基础简介
- java网络编程基础——UDP通信之DatagramSocket
- Java基础知识➣网络Socket(六)
- Java网络编程基础 1 建立一个提供当前时间字符串的ServerSocket
- java网络编程基础夯实07-基于TCP/UDP的Socket编程(单线程)
- 黑马程序员——java基础——Socket网络编程
- Java基础--Socket网络编程
- java基础之网络(UDP-Socket)
- Java自学之路-Java基础教程-45:Java网络聊天基础之1-套接字类Socket与ServerSocket
- java网络编程基础Socket通信应用