白云品牌型网站建设,郑州网站建设铁哥们,成都网站seo排名优化,唐山做网站多少钱hi#xff0c;我是逸尘#xff0c;一起学java吧 目标#xff08;任务驱动#xff09;
请练掌网络通讯的内容。
局域网和互联网
局域网英文#xff1a;Local Area Network#xff0c;缩写#xff1a;LAN#xff0c;是指一群通过一定形式连接起来的计算机#xff0c;…hi我是逸尘一起学java吧 目标任务驱动
请练掌网络通讯的内容。
局域网和互联网
局域网英文Local Area Network缩写LAN是指一群通过一定形式连接起来的计算机可以是两台计算机组成也可以是同一区域上千台计算机组成。
将LAN延伸到更大范围称之为广域网WAN
我们的互联网就是无数个WAN和LAN组成的。 网络编程
实现网络编程的三要素
ip地址端口协议
网络协议
规定计算机之间规则的就像法律一样但是各个国家不同所以有各种协议。
TCP/IP协议
我们的Internet网络采用的是TCP/IP协议包括两部分传输控制协议和网络(际)协议
我们来看4层模型的传输层和网络层 附 IP协议
在网际协议中主要是我们的IP协议
IP协议全称为“网际互连协议Internet Protocol
由其网络为其分配的ip地址作为计算机的身份到目前为止ip地址用4字节也就是32位二进制数表示为了方便使用每个字节取用十进制显示称位IPv4IPv6是为了解决IPv4不足的问题。
TCP和UDP协议
在传输控制协议中主要是我们的TCP协议和UDP协议
TCP协议 使用tcp协议必须双方先建立连接它是一种面向连接的可靠通信协议。 传输前采用三次握手方式建立连接所以是可靠的。 在连接中可进行大数据量的传输。 连接发送数据都需要确认且传输完毕后还需释放已建立的连接通信效率较低。 tcp协议通信场景 对信息安全要求较高的场景例如文件下载金融等数据通信。
UDP协议
udp是一种无连接不可靠传输的协议。 将数据源ip,目的地ip和端口封装成数据包不需要建立连接 每个数据包的大小限制在64kb内 发送不管对方是否准备好接收方收到也不确认故是不可靠的 可以广播发送发送数据结束时无需释放资源开销小速度快。 udp协议通信场景 语音通话视频会话等。 端口
端口应用程序在设备中唯一的标识。
那么我们接下来说一下端口在程序设计中是一个假想概念被规定为0~6553的整数。
普通网络应用程序使用1024以上端口HTTP一般是80
而套接字是将端口和应用程序连接的假想装置 InetAddress类 是与IP地址相关的类
package com.yd.tcp;import java.net.InetAddress;
import java.net.UnknownHostException;public class One {public static void main(String[] args) throws UnknownHostException {InetAddress ipInetAddress.getLocalHost();String localname ip.getHostName();String localip ip.getHostAddress();System.out.println(本机名:localname);System.out.println(本机地址:localip);}
}ServerSocket类
是与服务器套接字相关的类主要是等待网络上的请求可以指定端口来等待连接的套接字服务器套接字可以一次一和一个客户端套接字连接如果多个则会将其他客户端套接字存入队列中如果大于最大容量就会拒绝默认是50。
方法 调用accept()方法会返回一个连接的Socket对象服务器端的socke对象使用getOutputStream()方法获得输出流客户端使用getInputStream()方法获得其输入流。
也就是服务器向输出流写入信息时客户端相应读取输入流。 DatagramPacket类 DatagramSocket类 TCP网络程序设计
客户端发信息给服务器但是服务器不能向客户端发信息我们称位单向通信。
双方套接字连接成功就可以发送流 来进行信息传输接收。
服务端
package com.yd.tcp;import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;public class ServerDEmo {public static void main(String[] args) {try {System.out.println(服务端元神启动);//注册端口ServerSocket serverSocket new ServerSocket(8848);//等待建立一个socketSocket acceptsocket serverSocket.accept();//字节输入流InputStream inputStream acceptsocket.getInputStream();//包装成字符流BufferedReader bufferedReader new BufferedReader(new InputStreamReader(inputStream));//读String msg;while ((msgbufferedReader.readLine())!null){System.out.println(acceptsocket.getLocalAddress()说msg);}}catch (Exception e){e.printStackTrace();}}
}客户端
package com.yd.tcp;import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;public class Two {public static void main(String[] args) {try{//创建socketSocket socket new Socket(127.0.0.1, 8848);//输出流发送信息OutputStream out socket.getOutputStream();//字节流包装成打印成流PrintStream printStream new PrintStream(out);//发消息printStream.println(我是TCP客户端);printStream.flush();//关闭socket.close();}catch (Exception e){e.printStackTrace();}}
}UDP网络程序设计 import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;public class ServerDemo {public static void main(String[] args) throws Exception {System.out.println(服务端启动);//创建接收对象DatagramSocket datagramSocket new DatagramSocket(8888);//创建数据包对象接收数据byte[] buffernew byte[1024*64];DatagramPacket packetnew DatagramPacket(buffer, buffer.length);//等待接收数据包datagramSocket.receive(packet);//取出数据String s new String(buffer);System.out.println(收到了s);String s1 packet.getSocketAddress().toString();System.out.println(对方地址s1);int port packet.getPort();System.out.println(对方端口port);datagramSocket.close();}
}
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class ClientDemo {public static void main(String[] args) throws Exception {//发送数据System.out.println(发送);//创建发送对象默认端口DatagramSocket socket new DatagramSocket();byte[] buffer数据测试10.getBytes();DatagramPacket packet new DatagramPacket(buffer, buffer.length, InetAddress.getLocalHost(), 8888);//发送数据出去socket.send(packet);socket.close();}
}