网络编程 Socket
网络编程不等于网站编程,网络编程是网络编程的底层!
关于网络编程的包Java.net
TCP/IP协议分层
应用层(开发的程序)
传输层(TCP或UDP)
网络层(IP)
物理层(PC、网卡、网络线路、无线+卫星)
通信流程:
程序QQ发送字符串”你好”PC1封装信息发送TCP发送IP通过网络连接
找到IP发送PC2TCP翻译应用程序显示”你好”
为什么要分层?
例:电信通过电信号,长城通过光信号,如果不分层,需要对不同信号进行编程,但由于分层的概念,所以封装了这一层,你只需要对它进行编程.无需了解是通过什么信号!
Socket常用的实现: Client-------Server
Java.net 包中定义 两个类 Socket ServerSocket 分别实现客户端与服务器端连接
建立连接:IP地址寻找远程计算机、端口号找到计算机响应的进程
计算机可以分配的端口最多:2字节 == 65536个
注意:一般自己写的程序将端口号定义在1024以上,以免占用系统端口号!
端口号分为两种:UDP(65336个)、TCP(65336个) 各自端口不相互影响
服务器端(Server):ServerSocket
构造方法ServerSocket(int port) 需要指定一个端口号
accept()接受Client方信息
客户端(Client):Socket
构造方法Socket(String host, int port)
host:服务端主机地址 port:服务器方端口号
getInetAddress()获取IP地址
getInputStream()获取输入流
getOutputStream()获取输出流
getPort()获取端口号
Client与 Server 通信通过流
例:如果Client发送一个字符串”hello Server!”Server接受Client消息!
Client发送:OutputStream 输出流
Server 接受:InputStream输入流
UDP
UDP通过以包的形式传递数据!但是不保证绝对能送到,所以它不安全,但UDP也有其利用价值,必须游戏,语音聊天,视频聊天等!
使用的类为:
DatagramSocket(UDP 协议)
DatagramPackage (数据包)
InetSocketAddress(连接地址)
常用的构造方法:
DatagramSocket(int port):
为UDP指定一个唯一的端口号
DatagramPacket(byte[] buf, int length, SocketAddress address):
Buf: 指定数据
Length :数据长度
Address: 使用SocketAddress()使用它的子类的构造方法
InetSocketAddress(String hostname, int port):
Hostname: 指定主机IP
Port:端口号
DatagramSocket常用方法
close() 关闭
getLocalPort() 本机端口
getLocalAddress() 本机IP
receive(DatagramPacket p) 接受数据包
send(DatagramPacket p) 发送数据包
DatagramPackage常用方法
getLength()包中数据长度
getAddress() 包是哪个IP发送的
getPort() 包是哪个端口号发送的
getSocketAddress() 太好说,大概意思:包括发送地的ip+端口

本文深入讲解了Socket网络编程的基础知识,对比了TCP/IP协议与网站编程的区别,详细介绍了TCP/IP协议分层及通信流程,并提供了Java环境下Socket编程的具体实现方法,包括客户端与服务器端的建立连接过程。
236

被折叠的 条评论
为什么被折叠?



