网络编程三要素:端口,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 //得到资源路径+?后面的信息
协议:
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 //得到资源路径+?后面的信息