Java-网络编程
原创约 1271 字大约 4 分钟...
153-Java-网络编程.md
注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
网络基础知识
- 网络应用程序
- 在已实现了网络互联的不同的计算机上运行的程序,这些程序之间可以交换数据


- 网络编程 — socket编程
- 通过使用套接字来达到进程间通信目的编程就是网络编程
IP地址和端口号
IP
- TCP/IP协议
- 协议 —网络中计算机之间通信的规则
- 大多数的网络协议都以TCP/IP协议为基础
- IP地址
- IP地址为每台计算机指定一个标识号,通过这 个标识号来指定要接收数据的计算机和识别发送数据的计算机
- IPV4/IPV6
- IPV4 — 4个字节,即32位的二进制数表示
- IPV6 — 16个字节的格式来表示IP地址
- TCP/IP协议
端口号 ? 一台计算机运上运行多个网络程序,IP地址只能保证把数据送到该计算机但如何确定把这些数据交给哪个程序呢
端口号是一个整数,用于表示该数据帧交给哪个应用程序来处理
同一台计算机上不能有两个使用同一个端口的程序运行
端口数范围为0~65535
0~1023用于一些知名的网络服务和应用,用户的普通网络程序应使用1024以上的端口号(博主建议用4000以上的端口,因为4000以下的端口号几乎被占用,如Oracle端口1521,mysql端口号3306,sqlserver端口号1433)
端口号查看命令
- 在Windows 2000/XP/Server 2003中要查看端口,可以使用Netstat命令:
- 依次点击“开始→运行”,键入“cmd”并回车,打开命令提示符窗口。
- 在命令提示符状态下键入“netstat -a -n”,按下回车键后就可以看到以数字形式显示的TCP和UDP连接的端口号及状态。
使用 netstat -a -n 查看哪些端口被使用
若这些已被使用的端口写在如下代码中:
package 网络编程;
import java.io.IOException;
import java.net.ServerSocket;
public class TestServer {
public static void main(String[] args) {
ServerSocket server;
try {
server = new ServerSocket(49884);
server.accept();
} catch (IOException e) {
e.printStackTrace();
}
}
}
则会报如下错误,表明端口已被使用

TCP与UDP
- TCP(Transmission Control Protocol)
- 面向连接的通信协议
- 提供两台计算机间的可靠的、端到端的字节流通信的协议
- TCP(Transmission Control Protocol)
UDP(User Datagram Protocal)
- 无连接的通信协议
- UDP不保证可靠数据的传输
Bs&Cs
BS
Browser
Server
所有可以通过浏览器访问的App都是BS架构的。
CS
Client
Server
腾讯QQ 微信客户端程序 各种银行客户端程序
- B2C&B2B&B2B2C&B2C2C
B:商家
C:消费者
to:2
B2B: 阿里巴巴
C2C: 淘宝
B2B2C: 天猫
B2C2C:京东 卖家 消费者
- Socket原理
- Socket—套接字
- 是网络应用程序编程的接口和一种机制
- 用套接字中的相关函数来建立连接和完成通信
- Socket可以看成在两个程序进行通讯连接中的一个端点
- 将区分不同应用程序进程的三个参数
- 通信的目的的IP地址
- 使用的传输层协议
- 使用的端口号与一个socket绑定

- 端口工作原理
- 服务器上的端口不是监听端口。

- 基于TCP的Socket编程

- 利用TCP协议进行通信两个应用程序,有主从之分 一个称为服务器程(Server), 另外一个称为客户机程(Client)
- 交互过程
- 服务器程序创建一个ServerSocket,然后调用accept方法等待客户来连接
- 客户端程序创建一个socket并请求与服务器建立连接
- 刚才建立了连接的两个socket在一个单独的线程上对话
- 服务器开始等待新的连接请求
- 基于TCP的Socket编程
ServerSocket —— java.net.ServerSocket
实现服务器套接字
构造函数
- ServerSocket(int port)
- ServerSocket(int port, int maxqu)
accept( ) 方法用于等待客户端触发通信,返回值类型为Socket
- Socket —— java.net.Socket
- 实现客户端套接字
- 构造函数
- Socket(String hostName, int port)
- Socket(InetAddress a, int port)
- 可用方法
- InetAddress getInetAddress( )
- int getPort( )
- int getLocalPort( )
- InputStream getInputStream()
- OutputStream getOutputStream()
- void close()

拓展知识:
分割线
相关信息
以上就是我关于 Java-网络编程 知识点的整理与总结的全部内容
Powered by Waline v2.15.4