当前位置: 移动技术网 > 网络运营>网络>协议 > 基于TCP协议的网络通信

基于TCP协议的网络通信

2018年04月21日  | 移动技术网网络运营  | 我要评论

**重点内容**1.使用InetAddress(IP地址类)
这个类有点儿奇葩,没有提供构造方法。而是有两个静态方法来实例化。
·getByName(String host) 通过主机名获取对应的InetAddress对象
·getByAddress(byte[] addr) 通过IP地址获取对应的InetAddress对象

getCononicalHostName() 获取IP地址的全限定域名
getHostAddress() 返回IP地址字符串
getHostName() 获取IP地址的主机名
getLocalHost() 获取本机IP地址对应的InetAddress实例

获取本机的IP地址:

InetAddress address = InetAddress.getLocalHost();
String ipAddr = address.getHostAddress();
System.out.println(ipAddr);

2.基于TCP协议的网络编程
在通信的两端各建立一个Socket,从而在两点之间形成一个虚拟的网络链路。两端的程序就可以通过虚拟链路进行通信。
Java使用Socket对象来代表两端的通信端口,并通过Socket产生的IO流来进行网络通信。

IP协议: 负责将消息从一个主机传送到另一个主机,消息在传送过程中被分割成了一个个的小包。
不能解决数据分组在传输过程中可能出现的问题。为了无差错。引入TCP协议。

TCP协议:端对端的协议,两台主机连接的时候,TCP协议为他们建立了一个连接:发送和接受数据的虚拟链路(Socket)
可以正确的把数据传输到另一端。因为,当数据传输到另一端的时候,接受端会发送一条确认消息。如果没有收到确认消息的话,则会重发。

使用ServerSocket创建TCP服务器端
用于监听来自客户端的Socket连接,如果没有连接,它会一直处于等待状态。
监听来自客户端连接请求的方法:
Socket accept() 接收到Socket请求,将会返回一个与客户端请求相对应的Socket。

创建ServerSocket
ServerSocket(int port) 指定端口创建一个ServerSocket

使用完毕后,调用ServerSocket的close方法来关闭Socket。

为了能够一直接收客户端请求,通常把accept放在死循环中

示例:

ServerSocket ss = new ServerSocket(20000);
while(true)
{
Socket socket = ss.accept();
//通过Socket进行通信
}
ss.close();

使用Socket进行通信
在客户端直接使用Socket对象。
Socket(InetAddress,int port)
创建连接到远程主机,远程端口的Socket

例如: Socket s = new Socket(“192.1.1.168”,30000);

getInputStream 输入流 从Socket中取出数据
getOutputStream 输出流 向Socket输出数据

示例: 通过本地主机作为服务端向手机发送消息

ServerSocket ss = new ServerSocket(6500);
while(true)
{
    //获取相应端口号的Socket
    Socket s = ss.accept();
    //获取输出流
    OutputStream os = s.getOutputStream();
    os.write(你好吖~.getBytes(utf-8));
    os.close();
    s.close();
}

手机作为客户端接收信息

//此处的IP地址应该是服务端的IP,端口号也要和服务端的端口相同
Socket socket = new Socket(192.168.1.1,6500);
InputStream is = socket.getInputStream();
//之后就是正常的IO操作,不写了~~

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网