IP地址
:IP地址,想要让计算机相互通信,必须让每台计算机指定一个标号,通过这个标号来指定接收数据的计算机和识别发送的计算机,而IP
就是这个标号,也就是设备标识UDP
协议和TCP
协议InetAddress
的使用inetAddress
:此类表示internet协议(IP)地址
/*
常用的三个方法
*/
static InetAddress getByName(String host)//确定主机名称的IP地址,主机名可以是机器名也可以是IP地址
String getHostaName()//获取此IP地址的主机名
String getHostAddress()//返回文本显示IP地址字串符
UDP
是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当-台计UDP
协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输UDP
协议, 因为这种情况即使偶尔丢失-两个数据包,也不会对接收结果产胜太大影响。但是在使用UDP
协议传送数据时,由于UDP
的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP
协议发送数据的步骤
①创建发送端的Socket对象(DatagramSocket
? DategramSocket()
②创建数据, 并把数据打抱
DategramPacket(byte[] buf ,int length,InetAddress address, int port)
byte[] buf 数据源
int length 数据长度
可以用buf.length
表示
InetAddress address
IP地址
int port
端口号
③调用(DatagramSocke对象的方法发送数据
void send(DategramPacket p)
④关闭发送端
void close()
发送数据的步骤
①创建客户端的Socket对象(Socket)
Socket(String host, int port)
②获取输出流, 写数据
OutputStream getOutputStream()
③释放资源
void close0
接收数据的步骤
①创建服务 器端的Socket对象(ServerSocket)
ServerSocket(intport)
②监听客户端连接, 返回一个Socket对象
Socket accept0
③获取输入流,读数据,并把数据显示在控制台
InputStream getInputStream0
④释放资源
void close0
数据录入为字符串类型,需要将字节输入/输出转换为字符输入/输出
//创建服务器Socket对象
ServerSocket ss = new ServerSocket( port: 10000) ;
//监听客户端的连接,返回一个对应的Socket对象
Socket s = ss.accept();
//获取输入流
//InputStream is = s. getInputStream();
//InputStreamReader isr = new InputStreamReader(is);
//BufferedReader br = new BufferedReader(isr) ;
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String line;
while ((line = br.readLine()) != nu11) {
System.out.println(line);
}
//释放资源
ss. close();
//创建客户端Socket对象
Socket s = new Socket( host: "192.168.1.66", port: 10000);
//数据来自于键盘录入,直到输入的数据是886,发送数据结束
BufferedReader br = new BufferedReader(new InputStreamReader(System. in));
//封装输出流对象
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line;
while ((line=br.readLine()) !=null){
if("886" .equals(line)) {
break;
}
//获取输出流对象
OutputStream os = s.getOutputStream();
//os.write(line.getBytes());
bw. write(line);
bw. newLine();
bw.flush();
//释放资源
s.close();
原文:https://www.cnblogs.com/IAoli/p/12573939.html