J2SE Socket复习

本文深入讲解了Socket网络编程的基础知识,对比了TCP/IP协议与网站编程的区别,详细介绍了TCP/IP协议分层及通信流程,并提供了Java环境下Socket编程的具体实现方法,包括客户端与服务器端的建立连接过程。
网络编程 Socket
网络编程不等于网站编程,网络编程是网络编程的底层!
关于网络编程的包Java.net
TCP/IP协议分层
应用层(开发的程序)
传输层(TCP或UDP)
网络层(IP)
物理层(PC、网卡、网络线路、无线+卫星)

通信流程:
程序QQ发送字符串”你好”PC1封装信息发送TCP发送IP通过网络连接
找到IP发送PC2TCP翻译应用程序显示”你好”

为什么要分层?
例:电信通过电信号,长城通过光信号,如果不分层,需要对不同信号进行编程,但由于分层的概念,所以封装了这一层,你只需要对它进行编程.无需了解是通过什么信号!

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+端口
                     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值