InetAddress类的使用
网络通信的两个要素:
- IP和端口号
- 提供网络通信协议:TCP/IP参考模型(应用层、传输层、网络层、物理+数据链路层)
InetAddress
类使用:此类的一个对象代表一个具体的IP地址
实例化 | 常用方法 |
---|---|
getByName(String host) | getHostName() |
getLocalHost() | getHostAddress() |
TCP 编程
3.代码实例三:从客户端发送文件给服务端,服务端保存到本地。并返回“发送成功”
给客户端,并关闭相应的连接
public class TCPTest3 {
@Test
public void client() throws IOException {
Socket socket=new Socket(InetAddress.getByName("127.0.0.1"),9090);
OutputStream os=socket.getOutputStream();
FileInputStream fis=new FileInputStream(new File("beauty.jpg"));
byte[] buffer=new byte[1024];
int len;
while((len=fis.read(buffer))!=-1){
os.write(buffer,0,len);
}
//关闭数据的输出
socket.shutdownOutput();
//5.接受来自于服务器端的数据,并显示到控制台上
InputStream is = socket.getInputStream();
ByteArrayOutputStream baos=new ByteArrayOutputStream();
byte bufferr[]=new byte[20];
int len1;
while((len1=is.read(buffer))!=-1){
baos.write(buffer,0,len1);
}
System.out.println(baos.toString());
fis.close();
os.close();
socket.close();
baos.close();
}
@Test
public void server() throws IOException {
ServerSocket ss=new ServerSocket(9090);
Socket socket=ss.accept();
InputStream is=socket.getInputStream();
FileOutputStream fos=new FileOutputStream(new File("beauty2.jpg"));
byte[] buffer =new byte[1024];
int len;
while((len=is.read(buffer))!=-1){
fos.write(buffer,0,len);
}
//5.服务器端给予客户端反馈
OutputStream os = socket.getOutputStream();
os.write("你好".getBytes());
fos.close();
is.close();
socket.close();
ss.close();
os.close();
}
}
UDP 编程
public class UDPTest {
//发送端
@Test
public void sender() throws IOException {
DatagramSocket socket = new DatagramSocket();
String str="我是UDP方式发送的导弹";
byte[] data=str.getBytes();
InetAddress inet=InetAddress.getLocalHost();
DatagramPacket packet = new DatagramPacket(data,0,data.length,inet,9090);
socket.send(packet);
socket.close();
}
//接收端
@Test
public void receiver() throws IOException {
DatagramSocket sokect=new DatagramSocket(9090);
byte[] buffer=new byte[100];
DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);
sokect.receive(packet);
System.out.println(new String(packet.getData(),0,packet.getLength()));
sokect.close();
}
}
URL 编程
//可以读取、下载对应的url资源:
public class URLTest1 {
public static void main(String[] args) throws IOException {
URL url=new URL(" http://localhost:8080/examples/beauty.jpg");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.connect();
InputStream is = urlConnection.getInputStream();
FileOutputStream fos=new FileOutputStream("beauty3.jpg");
byte[] buffer=new byte[1024];
int len;
while((len=is.read(buffer))!=-1){
fos.write(buffer,0,len);
}
fos.close();
is.close();
urlConnection.disconnect();
}
}