0基础自学做网站,比较好的设计欣赏网站,7款优秀网站设计欣赏,软文推广广告公司4. 综合练习
练习一#xff1a;多发多收
需求#xff1a;
客户端#xff1a;多次发送数据
服务器#xff1a;接收多次接收数据#xff0c;并打印
代码示例#xff1a;
public class Client {public static void main(String[] args) throws IOException {//客户端多发多收
需求
客户端多次发送数据
服务器接收多次接收数据并打印
代码示例
public class Client {public static void main(String[] args) throws IOException {//客户端多次发送数据//服务器接收多次接收数据并打印
//1. 创建Socket对象并连接服务端Socket socket new Socket(127.0.0.1,10000);
//2.写出数据Scanner sc new Scanner(System.in);OutputStream os socket.getOutputStream();
while (true) {System.out.println(请输入您要发送的信息);String str sc.nextLine();if(886.equals(str)){break;}os.write(str.getBytes());}//3.释放资源socket.close();}
}
public class Server {public static void main(String[] args) throws IOException {//客户端多次发送数据//服务器接收多次接收数据并打印
//1.创建对象绑定10000端口ServerSocket ss new ServerSocket(10000);
//2.等待客户端来连接Socket socket ss.accept();
//3.读取数据InputStreamReader isr new InputStreamReader(socket.getInputStream());int b;while ((b isr.read()) ! -1){System.out.print((char)b);}
//4.释放资源socket.close();ss.close();}
} 练习二接收并反馈 案例需求 客户端发送数据接受服务器反馈 服务器收到消息后给出反馈 案例分析 客户端创建对象使用输出流输出数据 服务端创建对象使用输入流接受数据 服务端使用输出流给出反馈数据 客户端使用输入流接受反馈数据 代码实现 // 客户端
public class ClientDemo {public static void main(String[] args) throws IOException {Socket socket new Socket(127.0.0.1,10000);
OutputStream os socket.getOutputStream();os.write(hello.getBytes());// os.close();如果在这里关流,会导致整个socket都无法使用socket.shutdownOutput();//仅仅关闭输出流.并写一个结束标记,对socket没有任何影响BufferedReader br new BufferedReader(new InputStreamReader(socket.getInputStream()));String line;while((line br.readLine())!null){System.out.println(line);}br.close();os.close();socket.close();}
}
// 服务器
public class ServerDemo {public static void main(String[] args) throws IOException {ServerSocket ss new ServerSocket(10000);
Socket accept ss.accept();
InputStream is accept.getInputStream();int b;while((b is.read())!-1){System.out.println((char) b);}
System.out.println(看看我执行了吗?);
BufferedWriter bw new BufferedWriter(new OutputStreamWriter(accept.getOutputStream()));bw.write(你谁啊?);bw.newLine();bw.flush();
bw.close();is.close();accept.close();ss.close();}
}
练习三上传练习TCP协议 案例需求 客户端数据来自于本地文件接收服务器反馈 服务器接收到的数据写入本地文件给出反馈 案例分析 创建客户端对象创建输入流对象指向文件每读一次数据就给服务器输出一次数据输出结束后使用shutdownOutput()方法告知服务端传输结束 创建服务器对象创建输出流对象指向文件每接受一次数据就使用输出流输出到文件中传输结束后。使用输出流给客户端反馈信息 客户端接受服务端的回馈信息 相关方法 方法名说明void shutdownInput()将此套接字的输入流放置在“流的末尾”void shutdownOutput()禁止用此套接字的输出流 代码实现 public class Client {public static void main(String[] args) throws IOException {//客户端将本地文件上传到服务器。接收服务器的反馈。//服务器接收客户端上传的文件上传完毕之后给出反馈。
//1. 创建Socket对象并连接服务器Socket socket new Socket(127.0.0.1,10000);
//2.读取本地文件中的数据并写到服务器当中BufferedInputStream bis new BufferedInputStream(new FileInputStream(mysocketnet\\clientdir\\a.jpg));BufferedOutputStream bos new BufferedOutputStream(socket.getOutputStream());byte[] bytes new byte[1024];int len;while ((len bis.read(bytes)) ! -1){bos.write(bytes,0,len);}
//往服务器写出结束标记socket.shutdownOutput();
//3.接收服务器的回写数据BufferedReader br new BufferedReader(new InputStreamReader(socket.getInputStream()));String line br.readLine();System.out.println(line);
//4.释放资源socket.close();
}
}
public class Server {public static void main(String[] args) throws IOException {//客户端将本地文件上传到服务器。接收服务器的反馈。//服务器接收客户端上传的文件上传完毕之后给出反馈。
//1.创建对象并绑定端口ServerSocket ss new ServerSocket(10000);
//2.等待客户端来连接Socket socket ss.accept();
//3.读取数据并保存到本地文件中BufferedInputStream bis new BufferedInputStream(socket.getInputStream());BufferedOutputStream bos new BufferedOutputStream(new FileOutputStream(mysocketnet\\serverdir\\a.jpg));int len;byte[] bytes new byte[1024];while ((len bis.read(bytes)) ! -1){bos.write(bytes,0,len);}bos.close();//4.回写数据BufferedWriter bw new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));bw.write(上传成功);bw.newLine();bw.flush();
//5.释放资源socket.close();ss.close();}
}
练习四文件名重复 java
public class UUIDTest { public static void main(String[] args) { String str UUID.randomUUID().toString().replace(-, ); System.out.println(str);//9f15b8c356c54f55bfcb0ee3023fce8a } } public class Client {public static void main(String[] args) throws IOException {//客户端将本地文件上传到服务器。接收服务器的反馈。//服务器接收客户端上传的文件上传完毕之后给出反馈。
//1. 创建Socket对象并连接服务器Socket socket new Socket(127.0.0.1,10000);
//2.读取本地文件中的数据并写到服务器当中BufferedInputStream bis new BufferedInputStream(new FileInputStream(mysocketnet\\clientdir\\a.jpg));BufferedOutputStream bos new BufferedOutputStream(socket.getOutputStream());byte[] bytes new byte[1024];int len;while ((len bis.read(bytes)) ! -1){bos.write(bytes,0,len);}
//往服务器写出结束标记socket.shutdownOutput();
//3.接收服务器的回写数据BufferedReader br new BufferedReader(new InputStreamReader(socket.getInputStream()));String line br.readLine();System.out.println(line);
//4.释放资源socket.close();
}
}
public class Server {public static void main(String[] args) throws IOException {//客户端将本地文件上传到服务器。接收服务器的反馈。//服务器接收客户端上传的文件上传完毕之后给出反馈。
//1.创建对象并绑定端口ServerSocket ss new ServerSocket(10000);
//2.等待客户端来连接Socket socket ss.accept();
//3.读取数据并保存到本地文件中BufferedInputStream bis new BufferedInputStream(socket.getInputStream());String name UUID.randomUUID().toString().replace(-, );BufferedOutputStream bos new BufferedOutputStream(new FileOutputStream(mysocketnet\\serverdir\\ name .jpg));int len;byte[] bytes new byte[1024];while ((len bis.read(bytes)) ! -1) {bos.write(bytes, 0, len);}bos.close();//4.回写数据BufferedWriter bw new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));bw.write(上传成功);bw.newLine();bw.flush();
//5.释放资源socket.close();ss.close();}