标签:ade ima 组合 封装 运行 实现 bytes 成功 size
一、网络编程
就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换
二、网络模型
OSI参考模型
TCP/IP参考模型
三、网络编程三要素
UDP:
举例:发短信、扣扣聊天
TCP:
举例:打电话、语音聊天
两个DOS命令:
ipconfig:查看本机IP地址
ping + IP地址:测试本机与指定的ip地址间的通信是否有问题(127.0.0.1表示本机)
四、获取ip地址或者主机名
import java.net.InetAddress; import java.net.UnknownHostException; public class InetAddressDemo { public static void main(String[] args) throws UnknownHostException { InetAddress address = InetAddress.getByName("192.168.2.121"); String name = address.getHostName(); String ip = address.getHostAddress(); System.out.println(name + "----" + ip); } }
五、网络套接字(Socket)
Socket包含了:IP地址+端口
1、概念:
网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字
2、Socket原理机制
3、UDP协议发送与接收数据
接收端:
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; /* * UDP协议接收数据: * A:创建接收端Socket对象 * B:创建数据包(接收容器) * C:调用Socket对象的接收方法接收数据 * D:解析数据包并显示在控制台 * E:释放资源 * */ public class ReceiveDemo { public static void main(String[] args) throws IOException { DatagramSocket ds = new DatagramSocket(10086); byte[] bys= new byte[1024]; DatagramPacket dp = new DatagramPacket(bys,bys.length); ds.receive(dp); //解析数据 System.out.println(dp.getAddress().getHostAddress() + ":" + new String(dp.getData(),0,dp.getLength())); ds.close(); } }
发送端:
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /* * UDP协议发送数据: * A:创建发送端Socket对象 * B:创建数据,并把数据打包 * C:调用Socket对象的发送方法发送数据包 * D:释放资源 * */ public class SendDemo { public static void main(String[] args) throws IOException { DatagramSocket ds = new DatagramSocket(); byte[] bys = "hello,udp,我来了".getBytes(); DatagramPacket dp = new DatagramPacket(bys, bys.length,InetAddress.getByName("192.168.2.121"),10086); ds.send(dp); ds.close(); } }
改进版:
接收端
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; /* * UDP协议接收数据: * A:创建接收端Socket对象 * B:创建数据包(接收容器) * C:调用Socket对象的接收方法接收数据 * D:解析数据包并显示在控制台 * E:释放资源 * */ public class ReceiveDemo { public static void main(String[] args) throws IOException { DatagramSocket ds = new DatagramSocket(10086); while (true) { byte[] bys = new byte[1024]; DatagramPacket dp = new DatagramPacket(bys, bys.length); ds.receive(dp); // 解析数据 System.out.println(dp.getAddress().getHostAddress() + ":" + new String(dp.getData(), 0, dp.getLength())); } } }
发送端:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /* * 数据来自于键盘录入 * * */ public class SendDemo { public static void main(String[] args) throws IOException { DatagramSocket ds = new DatagramSocket(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = null; while((line = br.readLine())!=null){ if("886".equals(line)) break; byte[] bys = line.getBytes(); DatagramPacket dp = new DatagramPacket(bys, bys.length,InetAddress.getByName("192.168.2.121"),10086); ds.send(dp); } ds.close(); } }
4、TCP协议发送与接收数据
服务端:
import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; /* * TCP协议接收数据: * A:创建接收端的Socket对象 * B:监听客户端连接,返回一个对应的Socket对象 * C:获取输入流,读取数据显示在控制台 * D:释放资源 * * */ public class ServerDemo { public static void main(String[] args) throws IOException{ ServerSocket ss = new ServerSocket(8888); //监听客户端连接 Socket st = ss.accept(); InputStream is = st.getInputStream(); byte[] bys = new byte[1024]; System.out.println(st.getInetAddress().getHostAddress()+" : "+new String(bys,0,is.read(bys))); st.close(); //ss.close(); 这个不应该关闭 } }
客户端:
import java.io.IOException; import java.io.OutputStream; import java.net.Socket; /* * TCP协议发送数据: * A:创建发送端的Socket对象 * 这一步如果成功,就说明连接已经建立成功 * B:获取输出流,写数据 * C:释放资源 * TCP协议一定要先开服务器 * * */ public class ClientDemo { public static void main(String[] args) throws IOException { Socket st = new Socket("192.168.2.121", 8888); OutputStream os = st.getOutputStream(); os.write("hello,tcp,我来了".getBytes()); st.close(); } }
标签:ade ima 组合 封装 运行 实现 bytes 成功 size
原文地址:https://www.cnblogs.com/yinqanne/p/9650997.html