На этой неделе я начал работать с java-сокетами, и первой идеей было создать форму входа в систему, а затем некоторые формы, которые будут получать данные из БД.
Имя входа работает, но оно толькопроверяет один раз, потому что сервер закрывается.Я думаю, что мне нужно создать оператор while, чтобы сервер всегда слушал, но я на самом деле не знаю, где и как его разместить.
Пока это мой код: Сервер:
package pkgnew.sockets;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
ServerSocket serversocket;
Socket client;
BufferedReader input;
PrintWriter output;
public void start() throws IOException{
serversocket = new ServerSocket(9090);
System.out.println("Connection Starting on port:" + serversocket.getLocalPort() );
//make connection to client on port specified
//accept connection from client
client = serversocket.accept();
System.out.println("Waiting for connection from client");
try {
logInfo();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void logInfo() throws Exception{
//open buffered reader for reading data from client
input = new BufferedReader(new InputStreamReader(client.getInputStream()));
String username = input.readLine();
System.out.println("username" + username);
String password = input.readLine();
System.out.println("password" + password);
//open printwriter for writing data to client
output = new PrintWriter(new OutputStreamWriter(client.getOutputStream()));
if(username.equals("User") &&password.equals("Password")){
output.println("Welcome, " + username);
}else{
output.println("Login Failed");
}
output.flush();
output.close();
}
public static void main(String[] args){
Server server = new Server();
try {
server.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Клиент:
package pkgnew.sockets;
import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JOptionPane;
public class Client {
Socket socket;
BufferedReader read;
PrintWriter output;
public void startClient() throws UnknownHostException, IOException{
//Create socket connection
socket = new Socket("localhos", 9090);
//create printwriter for sending login to server
output = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
//prompt for user name
String username = JOptionPane.showInputDialog(null, "Enter User Name:");
//send user name to server
output.println(username);
//prompt for password
String password = JOptionPane.showInputDialog(null, "Enter Password");
//send password to server
output.println(password);
output.flush();
//create Buffered reader for reading response from server
read = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//read response from server
String response = read.readLine();
System.out.println("This is the response: " + response);
//display response
JOptionPane.showMessageDialog(null, response);
}
public static void main(String args[]){
Client client = new Client();
try {
client.startClient();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Заранее спасибо.