第四次过程性考核
码云地址:https://gitee.com/bhma/fourth_process_assessment/tree/master
考核内容:
*160121
使用套接写连接编写一个简单的聊天室程序,客户端主函数放在Client_Main.java文件中,服务器端主函数放在Server_Main.java文件中
要求:
- 1.客户端从控制台进行输入,并将自己的输出内容和时间保存到数据库的“client_学号”表中
- 2.服务器端读取到客户端的程序后,从控制台进行输入给客户端以回应,并将客户端的输入内容与服务端的输出内容、时间保存到数据库的表中
- 3.要求服务器端可以实现同时与多个客户端进行通信,与每一个客户端通信的内容,保存为一个"ip_学号"的表
- 4.提交文件结果包括:代码,数据库导出为.sql文件
服务器端:
import java.io.*;
import java.net.*;
public class Server_Main {
public static void main (String args []) {
String [] answer = {"我收到你的程序了","我要把你的输入内容我的输出内容还有时间保存到数据库中"};
ServerSocket serverForClient_Main = null;
Socket socketOnServer = null;
DataOutputStream out = null;
DataInputStream in = null;
try { serverForClient_Main = new ServerSocket(2010);
}
catch(IOException el) {
System.out.println(el);
}
try{ System.out.println("等待客户呼叫");
socketOnServer = serverForClient_Main.accept();
out = new DataOutputStream(socketOnServer.getOutputStream());
in = new DataInputStream(socketOnServer.getInputStream());
for(int i=0;i<answer.length;i++){
String s = in.readUTF();
System.out.println("服务器收到客户的提问:"+s);
out.writeUTF(answer[i]);
Thread.sleep(500);
}
}
catch(Exception e) {
System.out.println("客户已断开"+e);
}
}
}
客户端:
import java.io.*;
import java.net.*;
import java.sql.*;
public class Client_Main{
public static void main (String args[ ]) {
String [] mess={"请输入内容和时间,我会保存到'client_学号'表中","好的请保存"};
Socket mysocket;
DataInputStream in=null;
DataOutputStream out=null;
Connection con =null;
Statement sta = null;
ResultSet rs;
String SQL;
try {
class.forName("org.apache.derby.jdbc.EmbeddedDriver");
}
catch(Exception e) { }
try {
String url = "jdbc:derby:client_学号;create=true";
con=DriverManager.getConnection(uri);
sta.execute(SQL);
}
SQL="insert into ip_学号 values"+
try{ mysocket = new Socket("127.0.0.1",2010);
in = new DataInputStream(mysocket.getInputStream());
out = new DataOutputStream(mysocket.getOutputStream());
for(int i=0;i<mess.length;i++) {
out.writeUTF(mess[i]);
String s =in.readUTF();
System.out.println("客户收到服务器的回答:"+s);
Thread.sleep(500);
}
}
catch(Exception e) {
System.out.println("服务器已断开"+e);
}
}
}
考试提交的结果是上面这个,参考的是书上那个客户与服务器互答,但是能力有限服务器端还有问题,参考了别的同学的。
import java.net.*;
import java.util.*;
public class Client_Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
Thread readData;
ReceiveLetterForServer receiver=new ReceiveLetterForServer();
try{
readData =new Thread(receiver);
readData.start();
byte [] buffer=new byte[1];
InetAddress address=InetAddress.getByName("127.0.0.1");
DatagramPacket dataPack=new DatagramPacket(buffer,buffer.length,address,666);
DatagramSocket postman=new DatagramSocket();
System.out.print("请输入给服务器发送到消息:");
while(scanner.hasNext()){
String mess=scanner.nextLine();
buffer =mess.getBytes();
/*String jilu="(mess,null)";
String sqlStr="insert into mess values"+jilu;*/
if(mess.length()==0)
System.exit(0);
buffer =mess.getBytes();
dataPack.setData(buffer);
postman.send(dataPack);
System.out.print("继续输入发给服务器的消息:");
}
}
catch(Exception e){
System.out.println("服务器已断开"+e);
}
/*try{
sql=con.createStatement();
int ok=sql.executeUpdate(sqlStr);
rs=sql.executeQuery("select * from client_学号");
while(rs.next()){
String mess=rs.getString(1);
String time=rs.getString(2);
System.out.print(mess);
System.out.print(time);
}
con.close();
}
catch(SQLException e){
System.out.println(e);
}*/
}
}
import java.net.*;
import java.util.*;
import java.sql.*;
public class Server_Main {
public static void main(String[] args) {
/*Connection con=null;
Statement sql;
ResultSet rs;
con =GetDBConnection.connectDB("students","root","111111");
if (con==null)return;*/
Scanner scanner=new Scanner(System.in);
Thread readData;
ReceiveLetterForClient receiver=new ReceiveLetterForClient();
try{
readData =new Thread(receiver);
readData.start();
byte [] buffer=new byte[1];
InetAddress address=InetAddress.getByName("127.0.0.1");
DatagramPacket dataPack=new DatagramPacket(buffer,buffer.length,address,888);
DatagramSocket postman=new DatagramSocket();
System.out.print("请输入给客户端发送到消息:");
while(scanner.hasNext()){
String mess=scanner.nextLine();
buffer =mess.getBytes();
/*String jilu="(mess,null)";
String sqlStr="insert into mess values"+jilu;*/
if(mess.length()==0)
System.exit(0);
buffer =mess.getBytes();
dataPack.setData(buffer);
postman.send(dataPack);
System.out.print("继续输入发给客户端的消息:");
}
}
catch(Exception e){
System.out.println("客户端已断开"+e);
}
/*try{
sql=con.createStatement();
int ok=sql.executeUpdate(sqlStr);
rs=sql.executeQuery("select * from client_学号");
while(rs.next()){
String mess=rs.getString(1);
String time=rs.getString(2);
System.out.print(mess);
System.out.print(time);
}
con.close();
}
catch(SQLException e){
System.out.println(e);
}*/
}
}
实现数据库
import java.net.*;
public class ReceiveLetterForServer implements Runnable{
public void run(){
DatagramPacket pack=null;
DatagramSocket postman=null;
byte data[]=new byte[8192];
try{
pack=new DatagramPacket(data,data.length);
postman=new DatagramSocket(888);
}
catch(Exception e){}
while(true){
if(postman==null)
break;
else{
try{
postman.receive(pack);
String message=new String(pack.getData(),0,pack.getLength());
System.out.printf("%25s\n","收到:"+message);
}
catch(Exception e){}
}
}
}
}
总结:
本次java考核到此结束了,也没有给个完整的结局,主要是自己没认真学,学的不精,导致后面搞不太懂。学习上的java告一段落,接下来就是要实训中的java,要我们更加努力吧,有的时候有点思路,但是吧就不知道怎么写出来,还是对java结构编程不够清晰。以后更加努力吧!

浙公网安备 33010602011771号