java之网络(TCP和UDP)

1.Socket(插座)
1.两个应用程序可通过一个双向的网络通信连接实现数据交换,这个双向链路的一端称为一个Socket
2.Socket 通常用来实现client-server连接
3.java.net包中定义两个类Socket和ServerSocket,分别用来实现双向连接的client-server
4.建立连接时所需的地址信息为远程计算机的ip地址和端口号(Port number)(自定义端口号最后用1024以后的)
5.TCP端口和UDP端口是分开的

 

 

TCP编程


1.InetAddress类表示ip地址,有几个常见的静态函数
static InetAddress getLocalHost()/获得本地主机ip
static InetAddress getByName(String name)/获得name(比如域名"www.cus.69")所代表主机ip
非静态:
String getHostName()/获得主机名
String getHostAddress()/获得ip


2.InetSocketAddress类
实现ip套接字地址(ip地址+端口号)/(主机名+端口号)
构造函数
new InetSocketAddress(InetAddress addr,int port)/
new InetSocketAddress(String hostname,int port)/
new InetSocketAddress(int port)/

方法
InetAddress getAdress()/获得由InetAdress封装的ip
int getPort()/获得端口号
String getHostNmae()/获得主机名(地址的主机部分)

 


3.Socket类
常见的几个构造函数(throws IOEcxeption(UnknownHostException:当ip用字符串表示时),SecurityException(RunTimeException))
new Socket(String host(InterAddress),int port)/host表示服务器地址,port表示服务器监听的端口号
new Socket(InterAddress adress,int port,InterAddress localAddr,int localPort)/后两个参数表示本地客户端的ip和端口信息,默认情况下,客户端ip来自客户程序所在主机,客户端的端口由操作分配

常用方法
void connect(SocketAddress address,int time(毫秒))throws IOException/前一个表示服务器地址和端口,后一个表示建立连接允许的超时时间
void connect(SocketAddress address)throws IOException/通过套接字连接服务器
InetAddress getInetAddress()/获得服务器地址
int getPort()/获得服务器端口
InetAddress getLocalAddress()/获得客户端地址
int getLocalPort()/获得客户端端口号
InputStream getInputStream()/获得封装的输入流
outputSTream getOutputStream()/获得封装输出流
void close() throws IOException/关闭当前socket,同时关掉(该Socket输入输出流)
boolean isClosed()/
boolean isConnected()/
boolean isBound()/
void shutdownInput()/关闭输入流
void shutdownOutput()/关闭输出流
boolean isShutdownInput()/
boolean isShutdownOutput()/

 

4:ServerSocket类
常见构造函数(throws IOException)
new ServerSocket(int port)/监听端口号(服务器绑定端口号)
new ServerSocket(int port,int backlog)/
ServerSocket(int port,int backlog,InetAddress bindaddr)/backlog指定客户连接请求队列的长度,bindAddr指定服务器绑定的ip地址(默认服务器程序所在主机ip)

常见方法
Socket accept() throws IOException/重连接请求队列中取出一个客户的连接请求,然后创建与客户连接的Socket对象并返回,如果队列中没连接请求,该方法会一直等待,直到接受到连接请求才返回(阻塞式)
void close() throws IOException/关闭服务器,释放服务器所占的端口,断开与所有客户连接(服务器程序结束操作系统会自动调用该方法)
boolean isBound()/是否已经与特定端口绑定
InetAddress getInetAddress()/获得服务器ip地址
int getLocalPort()/获得服务器绑定的端口
bind(SocketAddress endpoint)/绑定地址端口
bind(SocketAddress endpoint,int backlog)/

三个选项:
SO_TIMEOUT/表示客户连接允许的超时时间,默认值0,表示永远不会超时
SO_RESUEADDR/表示是否允许重用服务器绑定的地址
SO_RCVBUF/表示接受数据的缓冲区大小

void setSoTimeout(int time(毫秒))throws SocketException/设置SO_TIMEOUT值
int getSoTimeout() throws IOException/获得该值

 

 

 

UDP编程:DatagramPacket类和DatagramSocket类
5.DatagramSocket类(建立套接字(发送站或接收站))
构造方法:
DatagramPort(int port)/绑定一个端口(并绑定默认本地地址)
DatagramPort(int port,InetAddress addr)/绑定主机地址和端口
DatagramPort(SocketAddress sad)/绑定到特定的套接字地址

方法:
void close()/关闭套接字
receive(DatagramPacket dp)/接收站接收数据,并存在dp
send(DatagramPacket dp)/发送站将dp里的内容发送到指定接收站
InetAddress getLocalAddress()/
int getLocalPort()/
int getSOTimeout()/
connect(InetAddress add,int port)/
connect(SocketAddress sad)/
...
还有很多方法类似Socket/ServerSocket类

 

6:DatagramPacket类(存放数据的数据报)
主要构造函数:
DatagramPacket(byte[] buf,int length(int offset,int length))/接收站接收长度为length的数据并放在buf里,length表示要读取的字节数
DatagramPacket(byte[]buf,int length,InetAddress address,int port)/发送站把length字节的数据存在buf里,并指定发送地址端口号
DatagramPacket(byte[]buf,int length,SocketAddress sad)/

方法
InetAddress getAddress()/获得数据发送地址/数据来源地址
byte[] getDate()/return data buffer(获得发送数据)
int getLength()/获得数据的长度
SocketAddress getSocketAddress()/获得端口号和地址
setAddress(InetAddress iaddr)/设置数据要发送到的地址
setSocketAddress()/
setPort()/

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值