首页 / JAVA / 学习java第二十三天
学习java第二十三天
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了学习java第二十三天,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4764字,纯文字阅读大概需要7分钟。
内容图文
![学习java第二十三天](/upload/InfoBanner/zyjiaocheng/727/96d25dce25c34136b89537dbfccef9d4.jpg)
学习java第二十三天
网络编程:
三大要素:
- ip
- 端口号
- 协议
ip:
获取IP地址的类:InetAddress
常规的方法:
public static InetAddress getLocalHost().返回本地主机
public String getHostAddress()获取ip地址
public String getHostName()获取ip的主机名
端口号:
软件开启时,系统随机生成一个,软件关闭时系统回收
常用软件的端口号:
Tomcat:8080
oracle:1521
mysql:3306
qq:4000
协议:
网络传输的规范:协议分为7层
传输层:TCP UDP+ xmpp协议
web 阶段: http协议 https协议:一次性的连接
UDP面向无连接协议:传输数据快
TCP面向连接协议:传输数据慢
TCP:
类Socket:
套接字(ip地址+端口号)
构造方法:
public Socket(String host, int port)创建一个流套接字并将其连接到指定主机上的指定端口号。
常规方法:
public Socket(String host)
创建一个流套接字并将其连接到指定主机上的指定端口号。
public InputStream getInputStream() 返回此套接字的输入流。
public OutputStream getOutputStream() 返回此套接字的输出流。
public void shutdownOutput() 禁用此套接字的输出流。(类似于flush() )
发消息过程:
实例化socket()对象
通过对象OutputStream
调用write()
调用shutdownOutput()
//等待服务器回复。。
5.拿到输入流InputStream
6.ner BufferReader(new InputStreamReader(ner FileInputStream))
7.关闭资源
Socket socket =new Socket("ip地址",端口号);
OutputStream os =socket.getOutputStream();
os.write(byte[] b);
socket.shutdownOutput();
...
socket.close();
类 ServerSocket:
服务器套接字
构造方法:
public ServerSocket(int port) 创建绑定到特定端口的服务器套接字。(需要与客户端口号一样)
常规方法:
public Socket accept() 侦听并接受到此套接字的连接。(返回的是socket对象)
收消息过程:
1.实例化ServerSocket。
2. 调用 accept() 返回的是一个socket对象
3.从socket拿到输入流 InputStream
4. new BufferReader(new InputStreamReader(new FileInputStream))
5.得到OutputStream 对象 调用 write()或者打印输出
6.shutdownOutput()
7.关闭资源
ServerSocket serverSocket = new ServerSocket(端口号);
Socket socket = serverSocket.accept();
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String str = null;
while ((str = br.readLine()) != null) {
System.out.println(str);
}
socket.shutdownInput();
socket.close();
对象传输:
传输的对象的类需要序列化
在上述收发过程中:
创建ObjectOutputStream对象流
客户机调用对象流写的方法。
服务器调用对象流读的方法。
写读完需要调用shutdownOutput()方法,shutdownInput()方法。
文件传输:
客户机:
读取出需要上传的文件
通过socket调用getOutputStream()写入到服务器
服务器:通过socket调用getInputStream() 读取出来
需要创建一个文件夹保存文件
需要读取系统时间作为名字避免文件覆盖!
UDP:
类 DatagramSocket
此类表示用来发送和接收数据报包的套接字。
构造方法:
public DatagramSocket(int port, InetAddress laddr)
参数:
port - 要使用的本地端口
laddr - 要绑定的本地地址
public DatagramSocket(int port)
参数:
port - 要使用的端口。
常规方法:
public void send(DatagramPacket p)
throws IOException从此套接字发送数据报包。
public void receive(DatagramPacket p)
throws IOException从此套接字接收数据报包。
包裹对象:类 DatagramPacket
此类表示数据报包。
数据报包用来实现无连接包投递服务。
构造:
public DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)
构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号。length 参数必须小于等于 buf.length。
参数:
buf - 包数据。
offset - 包数据偏移量。
length - 包数据长度。
address - 目的地址。
port - 目的端口号。
public DatagramPacket(byte[] buf, int offset, int length, SocketAddress address)
构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号。length 参数必须小于等于 buf.length。
参数:
buf - 包数据。
offset - 包数据偏移量。
length - 包数据长度。
address - 目的套接字地址。
常规方法:
public SocketAddress getSocketAddress()
获取要将此包发送到的或发出此数据报的远程主机的 SocketAddress(通常为 IP 地址 + 端口号)。
返回:SocketAddress
public byte[] getData()返回数据缓冲区。接收到的或将要发送的数据从缓冲区中的偏移量 offset 处开始,持续 length 长度。
返回:用来接收或发送数据的缓冲区
基于UDP的客户端:
实例化这个对象 DatagramSocket
构建一个包裹对象,数据包
发送数据send();
关闭资源
DatagramSocket ds =new DatagramSocket();
String s ="ssss";
InetAddress inetAddress =InetAddress.getLocalHost();//返回本地主机。
DatagramPacket dp =new DatagramPacket(s.getBytes(),
s.length(),inetAddress,6789);//6789是服务器的端口号
ds.send(dp);
ds.close();
基于UDP的服务器:
实例化对象 DatagramSocket
构建一个包裹对象
接收数据 receive()
拆包裹,调用包裹对象的getData()方法。
关闭资源
DatagramSocket ds=new DatagramSocket(6789);//设置端口号
byte [] b =new byte[2048];
DatagramPacket dp =new DatagramPacket(b,b.length);
ds.receive(dp);
byte [] by= dp.getData();
System.out.println(new String(by,0,by.length));
ds.close();
总结:学习这个网络编程,首次能在自己代码下和同桌实时通信,还是挺有趣的,不过也是容易出错的。还是要好好注意。
内容总结
以上是互联网集市为您收集整理的学习java第二十三天全部内容,希望文章能够帮你解决学习java第二十三天所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。