目次
1. URLを使用して、Webサーバー内のファイルの内容を読み取り、コンソールに表示します。
2. InetAddressクラスのメソッドを使用して、www.baidu.comのホストのIPアドレス(または他のドメイン名)を取得します。ローカルマシンの名前とIPアドレスを取得します。
3.SocketクラスとServerSocketクラスを使用してC / Sプログラムを作成し、C / S通信を実現します。
4.ネットワークファイル送信を実現するプログラムを作成します。
1.実験の目的
1 。URLクラスの使用を理解します。
2.マスター使用のInetAddressののクラス。
3 。マスターソケット通信方法、マスター使用のソケットクラスを、マスターの使用のServerSocketのクラスを、マスター通信アプリケーションを使用して、C / Sモード。
2.実験コード
1. URLを使用して、Webサーバーのファイルの内容を読み取り、コンソールに表示します。
ネットワークサーバーのアドレスは自作です。アドレスができる場合
https://news.163.com/20/1123/10/FS43N0VS000189FH.html?clickfrom=w_yw 。
package 作业练习.test7;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
public class Study_1 {
public static void main(String[] args) throws Exception {
// 构建一URL对象
URL baidu = new URL("https://news.163.com/20/1123/10/FS43N0VS000189FH.html?clickfrom=w_yw");
//由URL对象获取URLConnection对象
URLConnection uc=baidu.openConnection();
//由URLConnection获取输入流,并构造BufferedReader对象
BufferedReader br = new BufferedReader(new InputStreamReader(uc.getInputStream()));
String inputLine;
// 循环读取并打印数据
while ((inputLine = br.readLine()) != null)
System.out.println(inputLine);
// 关闭输入流
br.close();
}
}
2. InetAddressクラスのメソッドを使用して、www.baidu.comのホストのIPアドレス(または他のドメイン名)を取得します。ローカルマシンの名前とIPアドレスを取得します。
package 作业练习.test7;
import java.io.*;
import java.net.*;
public class Study_2 {
public static void main(String[] args) {
String url = "www.baidu.com"; //任意一个网站的域名
InetAddress ip = null;
try {
ip = InetAddress.getByName(url); //得到对应的IP地址
InetAddress ipv4 = InetAddress.getLocalHost();
String nativeip = ipv4.getHostAddress().toString(); // Get local IP Address
System.out.println("Local IP Address: " + nativeip);
System.out.println("域名" + url + "对应的IP地址是:" + ip.toString());
} catch (UnknownHostException e) {
System.out.println("输入的URL有错!");
} catch (Exception e) {
e.printStackTrace();
}
}}
3.使用ソケットクラスとのServerSocket書き込むクラスC / Sを実現するためのプログラムをC / Sの通信を。
クライアントはサーバーに開始コマンドを送信し、サーバーは文字列を受信した後、サーバーの現在の時刻をクライアントに返します。クライアントはサーバーに終了コマンドを送信し、サーバーはクライアントに「さようなら」を返し、終了します。
提案:2人の学生がグループで作業できます。1人の学生はサーバー側をシミュレートし、もう1人はクライアント側をシミュレートします。
package 作业练习.test7;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Study_3
{
public static void main(String args[])
{
try
{
Socket socket=new Socket("127.0.0.1",9000);//向本机的9000端口发出客户请求
System.out.println("客户端开启");
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));//InputStreamReader是字节流通向字符流的桥梁,从底层流读取字节
//BufferedReader 从字符输入流中读取文本
PrintWriter os=new PrintWriter(socket.getOutputStream());//getOutputStream()返回此套接字的输出流
String readline;
readline=in.readLine();
while(!readline.equals("bye"))//若读入的字符串为bye,就停止循环
{
os.println(readline);//将读入的字符串输出到Server
os.flush();//刷新输出流,使Server马上收到该字符串
readline=in.readLine();
}
os.close();//关闭Socket输出流
socket.close();//关闭Socket
}catch(IOException e){System.out.println("error:"+e);}
}
}
package 作业练习.test7;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Study_3
{
public static void main(String args[])
{
try
{
Socket socket=new Socket("127.0.0.1",9000);//向本机的9000端口发出客户请求
System.out.println("客户端开启");
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));//InputStreamReader是字节流通向字符流的桥梁,从底层流读取字节
//BufferedReader 从字符输入流中读取文本
PrintWriter os=new PrintWriter(socket.getOutputStream());//getOutputStream()返回此套接字的输出流
String readline;
readline=in.readLine();
while(!readline.equals("bye"))//若读入的字符串为bye,就停止循环
{
os.println(readline);//将读入的字符串输出到Server
os.flush();//刷新输出流,使Server马上收到该字符串
readline=in.readLine();
}
os.close();//关闭Socket输出流
socket.close();//关闭Socket
}catch(IOException e){System.out.println("error:"+e);}
}
}
4.ネットワークファイル送信を実現するプログラムを作成します。
要件:画像ファイルのネットワーク送信を実現するには、クライアントが完全な画像ファイルを受信できることを確認する必要があります。
package 作业练习.test7;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
//客户端:上传图片
public class CUploadPhotoClient {
public static void main(String[] args) throws Exception{
//1.连接诶服务器
Socket s = new Socket("192.168.190.1",5612);
System.out.println("已连接到服务器5612端口,准备传送图片...");
//获取图片字节流
FileInputStream fis = new FileInputStream("E:\\Intellij IDEL\\project\\src\\作业练习\\test7\\11.png");
//获取输出流
OutputStream out = s.getOutputStream();
byte[] buf = new byte[1024];
int len = 0;
//2.往输出流里面投放数据
while ((len = fis.read(buf)) != -1)
{
out.write(buf,0,len);
}
//通知服务端,数据发送完毕
s.shutdownOutput();
//3.获取输出流,接受服务器传送过来的消息“上传成功”
InputStream in = s.getInputStream();
byte[] bufIn = new byte[1024];
int num = in.read(bufIn);
System.out.println(new String(bufIn,0,num));
//关闭资源
fis.close();
out.close();
in.close();
s.close();
}
}
package 作业练习.test7;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class CUploadPhotoServer {
public static void main(String[] args) throws Exception{
//1.服务器开始监听5612端口
ServerSocket ss = new ServerSocket(5612);
System.out.println("服务端已启动,正在监听5612端口...");
//等待客户端
Socket s = ss.accept();
System.out.println("检测到客户端,准备数据接收...");
//客户端已连接,获取输入流
InputStream in = s.getInputStream();
//创建图片字节流
FileOutputStream fos = new FileOutputStream("server.png");
byte[] buf = new byte[1024];
int len = 0;
//往字节流里写图片数据
while ((len = in.read(buf)) != -1)
{
fos.write(buf,0,len);
}
//获取输出流,准备给客户端发送消息
OutputStream out = s.getOutputStream();
out.write("上传成功".getBytes());
//关闭资源
fos.close();
in.close();
out.close();
s.close();
ss.close();
}
}
テキストごとに1つの単語
未来についての空想を自分に与えるよりも、現在の時間に何かを追加する方が良いです!