1 。Java的网络编程包括了两种通信协议:
TCP(Transmission Control Protocal) 传输控制协议
UDP(User Datagram Prptocol) 用数据包协议
static InetAddress getLocalHost() 返回本地主机
static InetAddress getByName(String host) 在给定主机名的情况下确定主机的 IP 地址 查找局部网内部存在的一个IP地址,如果没有找到抛出异常
简单的说:一个电脑上的应用程序都绑定了一个对应的编号(端口),通过IP可以定位到指定的主机(电脑),再加上端口就可以定位到指定的程序了。
- 同一台机器上不能有两个程序使用同一个端口,会冲突。BindExeception
-
URL(Uniform Resource Locator)统一资源定位符,可以直接使用此类找到互联网上的资源如一个简单的网页。
一般由:协议名,资源所在主机(域名),端口,资源名等部分组成;
- URL(String protocol, String host, int port, String file)
-
TCP协议
- 什么是TCP协议
- 概念:略 传输层的协议 传输控制协议 Socket编程
- 重点是此协议中有两个类Socket 和ServerSocket 其中有一些方法,能够实现在两个不同的终端之间传输数据(客户端-服务端-客服端)
- TCP的特点
- Java中使用Socket实现TCP程序开发,使用此类可以方便的建立可靠的,双向的,持续的,点对点的通讯连接。
- 在Socket程序开发中,服务器端使用ServerScoket等待客户端的连接,在Java的网络程序中,每一个客户端都使用Socket对象表示。
package com.cj.TCP协议package com.cj.TCP协议;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
//创建服务器站点
ServerSocket ss = new ServerSocket(2020);
//获取到客户端发送的数据
Socket server = ss.accept();
//获取服务器端的输入流
InputStream is = server.getInputStream();
//获取输入流中的数据
byte[] b = new byte[is.available()];
is.read(b);
String ssss = new String(b);
System.out.println(server.getInetAddress().getHostName()+":"+ssss);
server.shutdownInput();
//回应数据
//获取要回应的数据
String data = "我没睡觉,我在干活";
//获取服务器输出流
OutputStream os= server.getOutputStream();
//将数据写入流中
os.write(data.getBytes());
System.out.println("我说:"+data);
//bos.close();
}
};
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Arrays;
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
//创建站点
Socket soc = new Socket(InetAddress.getLocalHost(), 2020);
//获取要传输的数据
String data = "你睡觉了吗?";
//获取客户端输出流
OutputStream os= soc.getOutputStream();
//将数据写入流中
os.write(data.getBytes());
System.out.println("我说:"+data);
soc.shutdownOutput();
//得到的反馈结果
//获取客户端输入流
InputStream is = soc.getInputStream();
byte[] b = new byte[is.available()];
is.read(b);
System.out.println(Arrays.toString(b));
String ssss = new String(b);
System.out.println("说:"+ssss);
}
}
- TCP的特点
- 什么是TCP协议