黑马程序员——网络编程
来源:互联网 发布:中草药识别软件下载 编辑:程序博客网 时间:2024/06/18 01:10
(一)网络编程:
1.网络模型分为两大类:OSI参考模型、TCP/IP参考模型
2.OSI参考模型分为七层:从上到下分别为,应用层,表示层,会话层,传输层,网络层,数据链路层,物理层;
3.TCP/IP参考模型分为四层::应用层,传输层,网际层,主机至网络层
其实在网路编程涉及的在传输层和网际层,做web开发在应用层。
网络通讯要素:ip地址,端口号(0~65535),传输协议
网络编程涉及用到Java.net.*;包
对IP 的类中InetAddress类 的地址的操作几个常用方法:
getLocalHost ,获取主机信息
getHostAddress(),获取主机地址
getHostName(),获取主机名称
传输协议(重点):
UDP:面向无连接的,数据包在64k以内,速度快,的不可靠协议,例如聊天软件的数据传输。
TCP:建立连接,大量数据传输,通过三次握手完成,可靠,效率稍低
Socket机制:为网络服务的一直机制,
特点:
(1)通信 的两端都有Socket
(2)网络通信其实就是Socket间的通信
(3)数据在两个Socket间通过IO传输
UDP的传输Socket 建立方式和步骤:
1)建立发送端,接收端
2)建立数据包
3)调用Socket的发送接收方法
4)关闭Socket
注意的是发送端和接收端是连个个独立运行的程序。
实例代码:
发送端:
import java.io.*;
import java.net.*;
class UdpSend
{
public static void main(String[] args) throws Exception
{
DatagramSocket ds =new DatagramSocket();
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
String line=null;
while((line=bufr.readLine())!=null)
{
if("886".equals(line))
break;
byte[] buf=line.getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("172.12.3.73"),10000);
ds.send(dp);
}
ds.close();
}
}
接收端:
class UdpRece
{
public static void main(String[] args) throws Exception
{
//1,建立udpsocket建立端点
DatagramSocket ds =new DatagramSocket(10000);
while(true)
{
//定义数据包用来存储数据
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length);
//通过服务的recevice方法将接受的数据存入数据包中
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+"::"+port);
}
//关闭资源
// ds.close();
}
}
TCP传输:
分为客户端和服务端:
ServerSocket ,Socket
步骤:
(1)首先建立客户端和服务端
(2)建立连理连接后,通过Socket中的IO流进行数据传输
(3)关闭socket
实例代码:
客户端建立步骤:
1,建立socket服务,指定要连接的主机和端口
2,获取socket流中的输出流,将数据写在该流中通过忘了发送给服务端
3,获取socket流中的输入流,将服务端反馈的数据获取并打印
4,关闭客户端资源
*/
class TcpClient2
{
public static void main(String[] args) throws Exception
{
Socket s=new Socket("127.0.0.1",10200);
OutputStream out=s.getOutputStream();
out.write("服务端你好".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();
}
}
class TcpServer2
{
public static void main(String[] args) throws Exception
{
ServerSocket ss=new ServerSocket(10200);
Socket s=ss.accept();
String ip=s.getInetAddress().getHostAddress();
System.out.println(ip+".....connected");
InputStream in=s.getInputStream();
System.out.println(ip);
byte[] buf=new byte[1024];
int len=in.read(buf);
System.out.println(new String(buf,0,len));
OutputStream out =s.getOutputStream();
Thread.sleep(10000);
out.write("收到,你也好".getBytes());
s.close();
ss.close();
}
}
上传图片的实现:
步骤:客户端
(1)建立服务端点
(2)读取客户端已有的图片数据
(3)通过socket输出流将数据发给服务端
(4)读取服务端反馈信息
(5)关闭
步骤:服务端
(1)建立服务端点
(2)速取socket流中的数据
(3)将读取的数据写入到文件中去(用缓冲区存)
(4)给客户端一个反馈表示上传成功。
(5)关闭流
注意:在写网络编程的时候必定会用到 java.io.*;java.net.*;包
自我心得:在该段学习中主要是知道UDP和TCP两种不同的传输方式,各自都有各自的特点,了解在什么情况下使用哪种方式传输。然后重要的就是在操作接收端和服务端的操作具体步骤,明确每一步的作用,是用来干什么的。之前在学习这部分知识的时候都弄明白了,但是过了一段时间之后,忘得差不多; ,通过这次总结让我又重新拾起忘记的知识。
- 黑马程序员— 网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员 — 网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 黑马程序员—网络编程
- 计算机专用英语词汇1500词(四)
- Android SDK下载和更新失败的解决方法
- [acm]动态规划-最大连续子序列
- Unable to find suitable jdk installaion
- C++虚函数机制解析
- 黑马程序员——网络编程
- python问题汇总
- Nature综述:NGS实验中的错误来自哪里?如何减少?
- vs 字体 配色
- 2014年4月微软MVP申请开始了!
- QT开发之旅三串口设备调试工具
- 踏上安卓之路
- iBATIS 例子
- SharePoint 使用技巧