linux mysql dengl_交作业了!哈哈-·

package uploaddemo;

import java.io.IOException;

public class Main { //本程序有注册,登录上传功能,按提示操作

//服务器main

public static int mm;

public static void main(String[] args) throws IOException {

// TODO Auto-generated method stub

String[] m = null;

int w = 0;

while (true) {

switch (mm) {

case 0:

m = new ReceiveServer().receive();

break;

case 1:

w = new Control().controls(m);// mm=1,进入分析控制端

break;

case 2:// 发送//mm=2,进入发送确认端口

case 3:

new ReceiveServer().send(w);

break;

case 4:

// 调用上传

w = new ReceiveServer().updat();

break;

}

}

}

}package uploaddemo;

import java.io.BufferedReader;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.io.InputStream;

//服务器接受发送端

public class ReceiveServer {

// receive()服务器接受端

public String[] receive() {

String[] w = new String[3];

while (true) {

ServerSocket net0 = null;

try {

net0 = new ServerSocket(9999);

Socket net = net0.accept();

BufferedReader n = new BufferedReader(new InputStreamReader(

net.getInputStream()));

String bb = null;

int m = 0;

while ((bb = n.readLine()) != null) {

w[m] = bb;

m++;// m[]分别读取发送过来的前3位

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

Main.mm=0;

} finally {

if (net0 != null)

try {

net0.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if (w[0] ==null) {

Main.mm = 0;

}else{Main.mm=1;}

return w;

}

}

// 发送端 确认信息

public void send(int a) {

PrintWriter pnet = null;

try {

Socket net = new Socket("localhost", 8888);

pnet = new PrintWriter(net.getOutputStream());

pnet.println(a);

pnet.flush();

} catch (IOException e) {

Main.mm=0;

// TODO Auto-generated catch block

} finally {

if (pnet != null)

pnet.close();

if (Main.mm == 1) {

Main.mm = 0;

}

if (Main.mm == 3) {

if(a==1){

Main.mm = 4;    //失败了就重新开始

}else{

Main.mm = 0;

}

}

}

}

// 上传接收端

public int updat() throws IOException {

ReceiveServer rec = new ReceiveServer();// 先接受文件名字且a[1]方的是文件名字

String[] a = rec.receive();

String cc = a[2];

String bb = "C:\\Documents and Settings\\Administrator\\桌面\\sjk\\" + cc;

// TODO Auto-generated method stub

ServerSocket net = null;

FileOutputStream ft = null;

int b = -1;

try {

net = new ServerSocket(7777);

Socket nett = net.accept();

InputStream nettt = nett.getInputStream();

ft = new FileOutputStream(bb);

while ((b = nettt.read()) != -1) {

ft.write(b);

ft.flush();

}

} catch (Exception e) {

// TODO Auto-generated catch block

Main.mm=0;

e.printStackTrace();

net.close();

} finally {

if (net != null)

net.close();

if (ft != null)

ft.close();

if (b!=-1){

new model().shangC(a[1], bb);

return 1;

}

}

return 0;

}

}package uploaddemo;

import java.io.IOException;

//分析 控制 返回0失败

public class Control {

public int controls(String[] m) throws IOException {

int n = Integer.valueOf(m[0]);

int w = 0;

switch (n) {

case 1:// m[0]为1时注册返回确认w

w = new model().zhuC(m[1], m[2]);

Main.mm = 2;

break;

case 2:// m[0]为2时登录返回确认w ,且进入上传接受端

w = new model().dengL(m[1], m[2]);

Main.mm = 3;// 到发送端去确认已经成功的信息

break;

}

return w;

}

}package uploaddemo;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

/注册 登录 上传 和数据库直接连接

/*

* zhuC(a,b)注册 返回0失败1成功

* dengL(a,b)登录 返回0失败1成功

*/

public class model {

// 注册方法 id,password即可

public int zhuC(String id, String psd) {

int mm = 0;

Connection net = mysqlnet.getnet();

String str = "insert into admin" + "(id,psd)values(?,?);";

try {

PreparedStatement n = net.prepareStatement(str);

n.setString(1, id);

n.setString(2, psd);

n.execute();

mm = 1;

} catch (Exception e) {

mm = 0;

}

return mm;

}

// 登录方法 id,password即可 dl返回0失败1成功

public int dengL(String id, String psd) {

Connection net = mysqlnet.getnet();

int dl = 0;

String str = "select psd from admin " + "where id=?;";

try {

PreparedStatement n = net.prepareStatement(str);

n.setString(1, id);

ResultSet re = n.executeQuery();

if (re.next()) {

if (psd.equals(re.getString("psd"))) {

dl = 1;

} else {

dl = 0;

}

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

dl = 0;

}

return dl;

}

// 上传

public int shangC(String id, String psd) {

int mm = 0;

Connection net = mysqlnet.getnet();

String str = "insert into file" + "(fName,fdir)values(?,?);";

try {

PreparedStatement n = net.prepareStatement(str);

n.setString(1, id);

n.setString(2, psd);

n.execute();

mm = 1;

} catch (Exception e) {

mm = 0;

}

return mm;

}

}package uploaddemo;

import java.util.Scanner;

public class MainClient {

//客户端main

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner input=new Scanner(System.in);

while(true){

System.out.println("请选择操作类型"+"\n"+"1,注册"+"\n"+"2,登录");

System.out.println("*********************");

String in=input.nextLine();

int mm=0;

try{

mm=Integer.valueOf(in);

}catch(Exception e){

System.out.println("输入有误,请重新输入");

}

if(mm==1){//注册

while(true){

System.out.println("请输出用户名");

String in11=input.nextLine();

System.out.println("请输出密码");

String in12=input.nextLine();

System.out.println("请确认密码");

String in13=input.nextLine();

if(in12.equals(in13)){

new sendClient().send(in11, in12,1);

break;

}else{

System.out.println("两次输入密码不一直,请重新输入");

System.out.println("*********************");

}

}

int aa= new sendClient().receive();

if(aa==1){

System.out.println("恭喜你注册成功");

}else{

System.out.println("注册失败啦都比");

}

System.out.println("*********************");

}

//登录&上传

if(mm==2){

System.out.println("请输出用户名");

String in11=input.nextLine();

System.out.println("请输出密码");

String in12=input.nextLine();

new sendClient().send(in11, in12,2);

int aa= new sendClient().receive();

if(aa==1){

System.out.println("恭喜你登录成功");

new sendClient().sChuan(in11);

}else{

System.out.println("登录失败啦都比");

}

System.out.println("*********************");

}

}

}

}package uploaddemo;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.net.UnknownHostException;

import java.util.Scanner;

//客户端发送

public class sendClient {

public void send(String a, String b, int c) {

Socket net = null;

try {

net = new Socket("localhost", 9999);

PrintWriter pnet = new PrintWriter(net.getOutputStream());

pnet.println(c);

pnet.flush();

pnet.println(a);

pnet.flush();

pnet.println(b);

pnet.flush();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

if (net != null)

try {

net.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

// 客户端接受

public int receive() {

while (true) {

int i = 0; // 返回i 0失败 1成功

ServerSocket net = null;

try {

net = new ServerSocket(8888);

Socket nett = net.accept();

BufferedReader bnet = new BufferedReader(new InputStreamReader(

nett.getInputStream()));

String b = null;

while ((b = bnet.readLine()) != null) {

i = Integer.valueOf(b);

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("登录失败");

} finally {

if (net != null)

try {

net.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return i;

}

}

// 上传客户发送端

public void sChuan(String id) {

Scanner input = new Scanner(System.in);

System.out.println("请输入文件绝对路径");

String str = input.nextLine();

File ss = new File(str);

new sendClient().send(id, ss.getName(), 3);

FileInputStream inS = null;

Socket nett = null;

try {

nett = new Socket("localhost", 7777);

inS = new FileInputStream(str);

OutputStream nettt = nett.getOutputStream();

int a = 0;

while ((a = inS.read()) != -1) {

nettt.write(a);

nettt.flush();

}

inS.close();

nett.close();

} catch (FileNotFoundException e) {

System.out.println("输入文件名有误!上传失败");

} catch (UnknownHostException e) {

System.out.println("未知本地地址,连接服务器失败");

} catch (IOException e) {

System.out.println("输入有误");

} finally {

try {

if (inS != null)

inS.close();

if (nett != null)

nett.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}package uploaddemo;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

/*数据库连接到dd数据库

* getnet方法获得连接

*/

public class mysqlnet {

private static final String URL="jdbc:mysql://localhost:3306/dd";

private static Connection net=null;

static {

try {

Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static Connection getnet(){

try {

net=DriverManager.getConnection(URL,"root","12345");

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return net;

}

}

简单说下写的程序,实现过程是这样的:服务接收端随时监控Socket请求(每次socket结束后会关闭掉,这里是直接填写的双方地址和端口号,主要不知道怎么断了重连,获取到的客户端端口是动态的) ,连接到上后  客户端会发给 服务端一个长度为3的数组,其中包涵用户名,密码,表示客户请求目的的变量。 服务端收到后 拿去分析第三个数字 再决定是否注册 和登录,到服务发送端返回结果。如果接到上传的请求,就有个专门的上传接收方法接收文件 (再传文件之前,调用接收端,接收一下文件的名字),然后io写入一个自定文件夹,insert 文件的信息(这里不知道怎么实现把文件直接存到数据库,可以直接预览?)。     调试bug真tm多,修bug都花了一天-·终于搞定了阿西坝,欢迎指点···

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值