1、使用TCP网络编程,实现图片的下载。
客户端:
import java.io.*;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost",8081);
InputStream inputStream = socket.getInputStream();
FileOutputStream fileOutputStream = new FileOutputStream("src\\ParcticeDiwuzhou\\lx0811\\lx01\\fileload\\two.jpg");
byte[] bytes = new byte[1024];
int read = inputStream.read(bytes);
while (read!=-1){
fileOutputStream .write(bytes,0,read);
read = inputStream.read(bytes);
}
fileOutputStream.close();
inputStream.close();
socket.close();
}
}
服务端
package ParcticeDiwuzhou.lx0811.lx01.fileload;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8081);
Socket accept = serverSocket.accept();
FileInputStream fileInputStream = new FileInputStream("src\\ParcticeDiwuzhou\\lx0811\\lx01\\fileload\\one.jpg");
OutputStream outputStream = accept.getOutputStream();
byte[] bytes = new byte[1024];
int i = fileInputStream.read(bytes);
// if(i!=-1){图片输出不完全,只读了一次,没有读完,写while循环读取内容,直到读完
while (i!=-1){
outputStream.write(bytes,0,i);
i=fileInputStream.read(bytes);
}
outputStream.close();
fileInputStream.close();
accept.close();
serverSocket.close();
}
}
2、使用URL编程,下载一个网络图片
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class Urlxl {
public static void main(String[] args) throws IOException {
// 创建url对象
URL url = new URL("http://localhost:8080/mypicture/a.jpg");
//建立连接
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
//下载
FileOutputStream fileOutputStream =
new FileOutputStream("src\\ParcticeDiwuzhou\\lx0811\\lx02\\d.jpg");
InputStream inputStream = httpURLConnection.getInputStream();
byte[] bytes = new byte[1024];
int read = inputStream.read(bytes);
while (read != -1) {
fileOutputStream.write(bytes, 0, read);
read = inputStream.read(bytes);
}
fileOutputStream.close();
inputStream.close();
//关闭连接
httpURLConnection.disconnect();
}
}
3、使用TCP网络编程,完成注册功能
客户端:
填写用户信息
发送信息给服务器
服务器:
接收信息
保存新用户到user.txt中
用户信息类
import com.sun.org.apache.xml.internal.serialize.Serializer;
import java.io.Serializable;
public class User implements Serializable {
public User() {
}
public User(String name, int id) {
this.name = name;
this.id = id;
}
private String name;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", id=" + id +
'}';
}
}
客户端
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
public class Client {
public static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) throws IOException, ClassNotFoundException {
while (true) {//使用while不断循环
System.out.println("添加");
tcpIo();
}
}
public static User addUser() {
System.out.println("请输入用户名");
String next = scanner.next();
System.out.println("请输入ID");
int id = scanner.nextInt();
User user = new User(next, id);
return user;
}
// public static void xulehua() throws IOException {
// FileOutputStream fileOutputStream = new FileOutputStream("src\\ParcticeDiwuzhou\\lx0811\\lx03\\localfile",true);
// ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
addUser(); //获取方法返回值就是调用方法执行一次然后返回一个值
//
// objectOutputStream.writeObject(addUser());
System.out.println(addUser().toString()); //因为调用该方法输入了一次
// }
public static void tcpIo() throws IOException, ClassNotFoundException {
//xulehua();
// System.out.println("111111"); 判断程序是否执行到此,也可添加断点
Socket socket = new Socket("localhost", 8820);
// FileInputStream fileInputStream = new FileInputStream("src\\ParcticeDiwuzhou\\lx0811\\lx03\\localfile");
// ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
OutputStream outputStream = socket.getOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
// User user=(User) objectInputStream.readObject(); 注册在客户端读什么?
//不使用序列化,传输字符串
// String s = addUser().toString();
//
// outputStream.write(s.getBytes());
objectOutputStream.writeObject(addUser());
objectOutputStream.close();
outputStream.close();
socket.close();
}
}
服务端
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Service {
public static void main(String[] args) throws IOException, ClassNotFoundException {
while (true) {
ServerSocket serverSocket = new ServerSocket(8820);
Socket accept = serverSocket.accept();
//序列化流读取传入的对象
InputStream inputStream = accept.getInputStream();
ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
FileOutputStream fileOutputStream =
new FileOutputStream("src\\ParcticeDiwuzhou\\lx0811\\lx03\\User.txt", true);
// byte[] bytes = new byte[1024];
// int read = inputStream.read(bytes);
// while (read != -1) {
// fileOutputStream.write(bytes, 0, read);
// read = inputStream.read(bytes);
// }
//将读取的对象转为字符串输出
User user=(User) objectInputStream.readObject();
while (user !=null){
fileOutputStream.write(user.toString().getBytes());
user=(User) objectInputStream.readObject();
}
fileOutputStream.close();
objectInputStream.close();
inputStream.close();
accept.close();
serverSocket.close();
}
}
}