目录
1.网络编程绪论
1.1 网络编程概念
在网络通信协议下,不同计算机上运行的程序,进行的数据传输。
常见的软件架构:
C/S(Client/Server)客户端/服务器:在用户本地需要下载并安装客户端程序,在远程有一个服务器端程序。画面可以做的非常精美,用户体验好,需要开发客户端,也需要开发服务端,用户需要下载和更新的时候太麻烦。
B/S(Browser/Server)浏览器/服务器: 只需要一个浏览器,用户通过不同的网址。客户访问不同的服务器。不需要开发客户端,只需要页面+服务端,用户不需要下载,打开浏览器就能使用,
如果应用过大,用户体验受到影响。
1.2 网络编程三要素
IP
设备在网络中的地址,是唯一的标识!
端口号
应用程序在设备中唯一的标识。
协议
数据在网络中传输的规则,常见的协议有UDP、TCP、http、https,ftp。
2.网络编程实战
2.1 UDP
2.1.1 UDP简介
UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。UDP的主要特点:
1.UDP是无连接的,减少开销和发送数据之前的时延。
2.UDP使用最大努力交付,即不保证可靠交付。
3.UDP是面向报文的,适合一次性传输少量数据的网络应用。
UDP格式
2.1.2 UDP实战
=一台电脑发送数据
public class Test {
public static void main(String[] args) throws IOException {
InetAddress address = InetAddress.getByName("10.9.6.56");
// System.out.println(address.getHostName());
// System.out.println(address.getHostAddress());
DatagramSocket datagramSocket=new DatagramSocket();
String msg="hello";
byte[] bytes = msg.getBytes();
DatagramPacket datagramPacket=new DatagramPacket(bytes,bytes.length,address,10086);
datagramSocket.send(datagramPacket);
datagramSocket.close();
}
}
一台电脑接收数据
public class Test1 {
public static void main(String[] args) throws IOException {
DatagramSocket datagramSocket=new DatagramSocket(10086);
byte[] bytes=new byte[1024];
DatagramPacket datagramPacket=new DatagramPacket(bytes,bytes.length);
datagramSocket.receive(datagramPacket);
byte[] data = datagramPacket.getData();
InetAddress address = datagramPacket.getAddress();
int length = datagramPacket.getLength();
System.out.println(new String(data,0,length));
System.out.println(address.getHostAddress());
datagramSocket.close();
}
}
2.2 TCP
2.2.1 TCP简介
这部分内容摘自王道考研
TCP协议特点如下图:
TCP报文段是由TCP首部和TCP数据部分组成,TCP报文段首部格式如下图:
TCP三次握手如下图:
TCP连接释放四次握手如下图:
2.2.2 TCP实战
服务端代码如下;
public class Test {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket(10086);
Socket accept = serverSocket.accept();
InputStream inputStream = accept.getInputStream();
int b;
while ((b=inputStream.read())!=-1){
System.out.println((char)b);
}
inputStream.close();
serverSocket.close();
}
}
客户端代码如下:
public class Test1 {
public static void main(String[] args) throws IOException {
Socket socket=new Socket("10.9.6.56",10086);
OutputStream outputStream = socket.getOutputStream();
outputStream.write("hello".getBytes());
outputStream.close();
socket.close();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/196993.html