JAVA基础-----网络编程

来源:互联网 发布:java string转boolean 编辑:程序博客网 时间:2024/05/19 04:26
网络编程三要素:端口,IP地址,协议
协议:
UDP:面向无连接,不安全,速度快
TCP:面向连接,安全,三次握手
(一)
使用UDP实现数据的发送
1.创建Socket端点
2.明确要发送的数据
3.使用Socket的发送功能发送数据
DatagramSocket socket = new DatagramSocket();//创建Socket对象
String ss = "hello world";
DatagramPacket packet = new DatagramPacket(ss.getBytes(),ss.getBytes().length,
InetAddress.getByName("127.0.0.1"),4444);//数据打包
socke.send(packet);//发送数据
socket.close();//关闭Socket
使用UDP实现数据的接收
1.创建Socket端点,同时监听端口
2.创建一个空的数据报包来接受数据
3.使用Socket接收功能接收数据
DatagramSocket socket = new DatagramSocket(4444);//创建Socket对象
byte[] b = new byte[1024];
DatagramPacket packet = new DatagramPacket(b,b.length);//创建一个空的数据打包
socke.receive(packet);//接收数据
b = packet.getData();//获取接收到的数据
String ss = new String(b,0,packet.getlength);//对数据进行解码


InetAddress address = packet.getAddress();//获取发送的主机
String ip = address.getHostAddress();//获取发送主机的IP地址
int port = packet.getPort();//获取端口号


socket.close();//关闭Socket


(二)
使用TCP实现数据的发送
1.创建Socket客户端对象,同时知名连接的服务器地址和端口号
2.向服务器发送数据,使用输出流
3.接收服务器返回的信息
4.关闭流对象
Socket socket = new Socket(InetAddress.getByName("10.0.185.175"),4444);//创建Socket对象


OutputStream out = socket.getOutputStream();
out.write("hello world".getBytes());//向服务器传输数据


InputStream in = socket.getInputStream();
byte[] b = new byte[1024];
int num=in.read(b);//从服务器读取数据
String ss= new String(b,0,num);


socket.close();//关闭流对象
使用TCP实现数据的接收
1.创建ServerSocket对象,同时监听端口
2.得到客户端使用的Socket流,即客户端对象
3.接收数据
3.想客户端发送信息
4.关闭流对象
ServerSocket server = new ServerSocket(4444);//创建对象
Socket socket = server.accept();//获取Socket流对象


InputStream in = socket.getInputStream();
byte[] b = new byte[1024];
int num=0;
while((num=in.read(b))!=-1)//从客户端接收数据
{
System.out.print(new String(b,0,num));
}


OutputStream out = socket.getOutputStream();
out.write("发送成功".getBytes());//向客户端传输数据


socket.close();//关闭流对象


(三)
URL: 统一资源定位符
String path = "http://Localhost:8080/myweb/mail.html";
URL url = new URL(path);
URLConnection conn = url.openConnection();//连接服务器


InputStream in = conn.getInputStream();
byte[] b = new byte[1024];
int num = 0;
while((num = in.read(b))!=-1)//读取服务器传回的数据
{
System.out.print(new String(b,0,num));
}
另:url.getProtocol()  //协议
    url.getHost  //IP地址
    url.getPort  //端口
    url.getPath  //得到资源路径
    url.getFile  //得到资源路径+?后面的信息
1 0
原创粉丝点击