Java学习笔记之网络编程

InetAddress

网络编程中的基础工具类,提供了一些方法获取主机相关信息。

无需new对象,可直接调用InetAddress  A = InerAddress.getLocalHost();

TCP网络编程

Socket

又称套接字,通信的两端都要有Socket,是两台机器通信的端点,相当于两个插口。在两台机器通信前要在两个Socket间建立一个IO流。网络通信实际就是Socket间的通信。其中主动发起通信的成为客户端,等待请求通信的称为服务端。客户端需要Socket.getOutputStream来建立输出流,服务端要通过Socket.getInputStream来建立输入流,如果服务端要返回数据同样需要建立IO流。

服务端

1)监听本机某端口(这里以9999示例)前天是该端口本机没有别的服务监听,端口选择尽量避免0-1024

ServerSocket serversocket = new ServerSocket(9999);

2)当没有客户端链接是程序会阻塞在端口监听。如果有客户端链接就会返回一个Socket对象。

Socket socket = serversocket.accept();

3)获取一个输入流用以接受客户端发送的数据。

InputStream inputstream = socket.getInputStream();

4)根据输入流相关方法读取数据。

5)关闭相关流和scoket。

客户端

1)根据IP地址和端口链接服务端

Socket socket = new Socket(InterAddress.getLocalHost,9999);

2)建立和该socket对象关联的输出流对象。

OutputStream outputstream = socket.getOutputStream();

3)通过流写数据。

outputstream.write();

4)发送完数据要写一个结束标记,表示此次传输结束。

socket.shoutdownOutput;

4)一定要关闭流和socket,避免资源占用。

outputstream.close();

socket.close();

若使用字符流进行传输数据,可使用转换流把字节流转换成字符流。结束标志可以写成write.newLine。并且字符流在写完数据时一定要手动刷新(flush),否则无法写入。同时在对应的接收方一定要使用readLine方法,否则无法读取结束标志。

netstat指令

在dos控制台下执行,netstat -an可以查看当前主机网络情况,包括端口监听情况和网络连接情况

netstat -an|more可以分页显示(数据太多一页显示不下时)空格换页。

外部地址就是连接了本机的服务器地址和端口号。

ctrl+c退出指令。

UDP网络编程

UDP是不靠谱网络通信,主要通过DatagramSocket和DatagramPacket进行数据传输

UDP数据报通过数据报套接字 DatagramSocket发送和接收,系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。

DatagramPacket 对象封装了UDP数据报,在数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号。

UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接。

由于UDP没有明确的发送方和接收方,所以大致传输流程如下:

        1.核心的两个类/对象 DatagramSocket与DatagramPacket 

        2.建立发送端,接收端(没有服务端和客户端概念),即new DatagramSocket对象,发送端和接收端均需指明监听的端口号。

        3.发送数据前,建立数据包/报 DatagramPacket对象,发送端数据报初始化时要给出明确的IP及端口号,接收端数据报初始化时只需传入字节数组即可。每个数据包最大64k。

        4.调用DatagramSocket的发送、接收方法

        5.关闭DatagramSocket

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值