Utilice la comunicación de Socket para leer y almacenar información de los estudiantes
Implementación de TCP
Programa de servidor
/*
*采用多线程的方式,使用时先开启服务器
*/
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerThread implements Runnable{
private Socket socket;
public ServerThread(Socket socket){
this.socket = socket;
}
@Override
public void run() {
try {
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
User user = (User)ois.readObject();
System.out.println(user.getLoginId()+" "+user.getLoginPwd());
String answer;
if("qqq".equals(user.getLoginId()) && "qqq".equals(user.getLoginPwd()))
answer = "登陆成功";
else
answer = "登录失败";
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write(answer);
bw.flush();
bw.close();
ois.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
//服务器测试程序
import java.net.ServerSocket;
import java.net.Socket;
public class TestService {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8888);
while(true){
Socket socket =ss.accept();
Thread thread = new Thread(new ServerThread(socket));
thread.start();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
Cliente
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Scanner;
public class TestClientOne {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
User user = new User();
System.out.println("请输入账号:");
user.setLoginId(input.next());
System.out.println("请输入密码:");
user.setLoginPwd(input.next());
try {
Socket socket = new Socket("127.0.0.1",8888);
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(user);
oos.flush();
socket.shutdownOutput();
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String answer = br.readLine();
if("succesful".equals(answer))
System.out.println("登陆成功");
else
System.out.println("登录失败");
br.close();
oos.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
}
}
usuario
import java.io.Serializable;
public class User implements Serializable {
private static final long serialVersionUID = 9016951163266064174L;
private String LoginId;
private String LoginPwd;
public User() {
}
public User(String loginId, String loginPwd) {
LoginId = loginId;
LoginPwd = loginPwd;
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public String getLoginId() {
return LoginId;
}
public void setLoginId(String loginId) {
LoginId = loginId;
}
public String getLoginPwd() {
return LoginPwd;
}
public void setLoginPwd(String loginPwd) {
LoginPwd = loginPwd;
}
@Override
public String toString() {
return "User{" +
"LoginId='" + LoginId + '\'' +
", LoginPwd='" + LoginPwd + '\'' +
'}';
}
}
Implementación de UDP
Remitente
//发送端
public class Send {
public static void main(String[] args) throws IOException {
//创建socket
DatagramSocket socket = new DatagramSocket(); //数据、来源,不会放到socket中,放到DatagramPacket数据报中
//封装数据报
String data = "通过UDP方式发送数据";
byte[] bytes = data.getBytes(); //字符串转化为字节数组
InetAddress inet =InetAddress.getLocalHost();
//创建DatagramPacket包时,需要说明发送数据的字节数组,接受的长度,端口号
DatagramPacket packet = new DatagramPacket(bytes,0,bytes.length,inet,8888); //需要同byte数组的方式发送数据
//通过socket发送数据报
socket.send(packet);
socket.close();
}
}
Extremo de recepción
public class Rceive {
public static void main(String[] args) throws IOException {
DatagramSocket socket = new DatagramSocket(8888); //数据、来源,不会放到socket中,放到DatagramPacket数据报中
byte[] bytes = new byte[1024];
DatagramPacket packet = new DatagramPacket(bytes,0,bytes.length);
socket.receive(packet); //接收到数据报的文件
System.out.println(new String(packet.getData(),0,packet.getLength()));
socket.close();
}
}
URL
Descargar imágenes en línea por URL
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
public class URLTest {
public static void main(String[] args){
HttpURLConnection urlConnection = null;//获取到关于服务器的一个链接
InputStream inputStream = null;
FileOutputStream fos = null;
try {
URL url = new URL("http://m.imeitou.com/uploads/allimg/2020111109/mzv1lm34vw3.jpg");
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.connect(); //获取链接,访问服务器上的地址
inputStream = urlConnection.getInputStream();
fos = new FileOutputStream("C:\\Users\\Pictures\\javadown1.jpg");
byte[] data = new byte[1024000]; //这个值太小下载的图片不清晰
int index;
if((index = inputStream.read(data)) != -1){
fos.write(data,0,index);
}
fos.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(urlConnection != null)
urlConnection.disconnect();
}
}
}