网络通讯中所需要了解的一些内容
TCP/IP协议体系:
网络层:ip
传输层:Tcp,Udp
应用层:SMTP,FTP,HTTP,thunder.
网络数据传输所需的要素:
1,IP地址:127.0.0.1 localhost
2,端口:数据进行出入的逻辑地址,用于标识处理数据的应用程序。
0~65535 0~1024:系统应用或者保留端口。
3,协议:通讯的规则。
Tcp和Udp的特点:
Udp:面向无连接,速度较快,不安全,容易丢失数据。
通过数据封包的形式进行数据的传输,每一个包最大是64k。
数据包里封装了源地址,源端口,目的地址,目的端口,主体数据。
涉及到的对象DatagramSocket,DatagramPacket
Tcp:面向连接,建立连接稍消耗资源,有了连接,就有了数据通道,就可以在该通道进数据的传输。
通过三次握手的形式完成连接的建立。
涉及到的对象:Socket,ServerSocket.
------------------------------------------------------------------------------------------------------------------------------------
Socket:给网络通讯提供的一个机制,因为协议的不同,对应的socket服务也不一样。
UDP通讯:
就好像是邮递包裹,或者步话机,需要有两个端点。
发送端思路:
1,建立udp的socket服务。
2,将数据封装成数据包,并在包中指定目的地址和端口。
3,通过socket服务的send方法将数据发出。
4,关闭socket资源。
- DatagramSocket ds = new DatagramSocket();
- byte[] arr = "data hen duo ".getBytes();
- DatagramPacket dp = new DatagramPacket(arr,arr.length,InetAddress.getByName("127.0.0.1"),10000);
- ds.send(dp);
- ds.close();
接收端思路:
1,建立udp的socket服务,并监听一个端口。
2,为了获取数据中的分类信息,包括源地址,数据主体。
先定义好了一个数据包,将一个字节数组作为缓冲区封装到了数据包对象中。
3,通过socket服务的receive方法将收到的数据存入到数据包中。
4,通过数据包的方法获取数据包中不同类别的数据。
5,关闭资源。(视情况而定)
- DatagramSocket ds = new DatagramSocket(10000);
- byte[] buf = new byte[1024];
- DatagramPacket dp = new DatagramPacket(buf,buf.length);
- ds.receive(dp);//接收方法是阻塞式的。
- String ip = dp.getAddress().getHostAddress();
- String data = new String(dp.getData(),0,dp.getLength());
- int port = dp.getPort();
- System.out.println(ip+":"+data);
- ds.close();
------------------------------------------------------------------------------------------------------------------------------------
Tcp的通讯:
相当于打电话。
客户端的思路:
1,建立客户端的socket服务,通常指定目的地址和端口.
2,通过建立的好的通道中的socket流的读取和写入对象对数据进行操作。
3,关闭客户端。
- Socket s = new Socket("127.0.0.1",10002);
- OutputStream out = s.getOutputStream();
- out.write(" tcp ....".getBytes());
- InputStream in = s.getInputStream();
- byte[] buf = new byte[1024];
- int len = in.read(buf);
- System.out.println(new String(buf,0,len));
- s.close();
服务端的思路:
1,建立服务端的socket服务,需要监听一个端口。
2,通过accept方法获取客户端对象。
3,通过获取到的客户端对象的读取和写入流对象与对应的客户端进行通讯。
4,关闭客户端,关闭服务端(视情况而定).
- ServerSocket ss = new ServerSocket(10002);
- Socket s = ss.accept();
- InputStream in = s.getInputStream();
- byte[] buf = new byte[1024];
- int len = in.read(buf);
- System.out.println(new String(buf,0,len));
- OutputStream out = s.getOutputStream();
- out.write("收到".getBytes());
- s.close();
- ss.close();
------------------------------------------------------------------------------------------------------------------------------------
WEB服务器原理,基于三项技术完成
1,socket。
2,多线程。
3,IO流。
------- android培训、java培训、期待与您交流! ----------
详细请查看:http://edu.csdn.net/heima/