跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 跨境风云 > 【JavaSE】网络编程

【JavaSE】网络编程

时间:2024-04-04 07:05:32 来源:网络cs 作者:亙句 栏目:跨境风云 阅读:

标签: 网络 
阅读本书更多章节>>>>

定义:在网络通信协议下,不同计算机上运行的程序,进行的数据传输

常见的软件架构:

C/S:Client/Server(客户端/服务器)

在用户本地需要下载并安装客户端程序

画面可以很精美,用户体验好需要开发客户端,也需要开发服务端用户需要下载和更新太麻烦

B/S:Browser/Server(浏览器/服务器)

只需要浏览器,通过不同网址访问

不需要开发客户端,只要开发服务端用户不需要下载,打开游览器就能玩如果应用过大,用户体验差劲

网络编程三要素

IP:设备在网络中的地址,是唯一的标识端口号:应用程序在设备中唯一的表示协议:数据在网络中传输的规则

IPv4:全称:Internet Protocol version 4

采用32地址长度,分成四组(最多2^32不够用) 点分十进制

IPv6:Internet Protocol version 4

采用128位地址长度,分成8组(2^128) 冒分16进制

特殊IP地址:127.0.0.1 是localhost:是回送地址,也称本机ip

常用的CMD命令

ipconfig:查看本机ip地址

ping:检查网络是否联通

Static InetAddress getByname(String host) 确定主机名称的ip地址,主机名称可以是机器名称,也可以是ip地址】】

String getHostName() 获取次ip地址的主机名(局域网找不到就返回ip)

String getHostAddress() 返回文本显示的地址字符串

端口号:

由两个字节表示的整数,取值范围:0~65535

其中0~1023之间的端口号用于知名网络服务和应用

***一个端口号只能被一个应用程序使用

协议:

UDP

用户数据报协议UDP是面向无连接通讯协议 速度快有大小限制,最多一次发送64K,数据不安全,易丢失数据

TCP

传输控制协议TCPTCP协议是面向连接的通讯协议速度慢,没有大小限制,数据安全

UDP

UDP发送信息:

创建发送端的DatagramSocket对象

细节:空参会随机一个端口发送

有参:指定端口绑定

数据打包(DatagramPacket)

new DatagramPacket(byte[] bytes,0,int len,InetAddress adress,int port)

address指定发送给哪个ip

port指定端口

发送数据

ds.send(dp);

释放资源

UDP接受信息:

创建DatagramSocket(port)

端口与发送端一致

接收数据包

DatagramPacket(bytes,bytes.length)

ds.receive(dp)

解析数据包
byte[] data=dp.getData();  获取数据int len=dp.getLength();    获取长度int port= dp.getPort();    获取端口InetAddress address=dp.getAddress();    获取地址

UDP的三种通信方式:

单播组播

地址:224.0.0.0~239.255.255.255

广播

TCP

TCP发送消息

1、客户端

创建Socket(String host, int port)对象向服务器发送连接请求向服务器发送服务请求接受服务结果(服务响应)关闭流和Socket对象

发送数据的步骤

1、创建客户端的Socket对象(Socket)

Socket(String host, int port)

2、获取输出流,写数据

OutputStream getOutputStream()

3、释放资源

Soc创建Socket(String host, int port)对象向服务器发送连接请求向服务器发送服务请求接受服务结果(服务响应)关闭流和Socket对象ket socket=new Socket("127.0.0.1",10086);OutputStream os=socket.getOutputStream();OutputStreamWriter osw=new OutputStreamWriter(os);while (true){    String str=sc.next();    osw.write(str);    if(str.equals("再见")){        break;    }    osw.flush();}osw.close();socket.close();

2、服务端

创建ServerSocket(int port)对象

在Socket上使用accept方法监听客户端的连接请求阻塞、等待连接的建立接收并处理请求信息将处理结果返回给客户端关闭流和Socket对象

1、创建服务器端的Socket对象(ServerSocket)

ServerSocket(int port)

2、获取输入流,读数据,并把数据显示在控制台

Socket accept()

3、释放资源

public static void main(String[] args) throws IOException {    ServerSocket ss=new ServerSocket(10086);    while (true) {        Socket socket = ss.accept();        InputStream is = socket.getInputStream();        InputStreamReader ir = new InputStreamReader(is);        int len;        char[] chars=new char[1024];        String str=null;        while ((len = ir.read(chars)) != -1) {            str=new String(chars,0,len);            System.out.println(str);            if(str.equals("再见")){                break;            }        }        if(str.equals("再见")){            break;        }        socket.close();;    }    ss.close();;}

注意

TCP IO流循环结束的的标志不是-1,开始的时候结束是因为发送端结束凿毁了socket通道

一个secokt服务端只能接受一个来源,多个来源没办法区分

Http协议一行一行是靠换行符进行区分

GET / HTTP/1.1Host: 127.0.0.1:10086Connection: keep-alivesec-ch-ua: "Microsoft Edge";v="119", "Chromium";v="119", "Not?A_Brand";v="24"sec-ch-ua-mobile: ?0sec-ch-ua-platform: "Windows"Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7Sec-Fetch-Site: noneSec-Fetch-Mode: navigateSec-Fetch-User: ?1Sec-Fetch-Dest: documentAccept-Encoding: gzip, deflate, brAccept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,ja;q=0.5

阅读本书更多章节>>>>

本文链接:https://www.kjpai.cn/fengyun/2024-04-04/153645.html,文章来源:网络cs,作者:亙句,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论