Клієнт-сервер java
TCP/IP — сокети (socket) — порти комп’ютерів — використовуються для реалізації двонаправлених з'єднань між двома вузлами мережі Інтернет. Сокети дозволяють організувати взаємодію повноцінних програм і аплетів Java через мережу Internet. Це створює можливості опрацювання інформації за схемою клієнт — сервер, де в ролі сервера може виступати комп’ютер, під'єднаний до мережі, а не тільки Web-сервер… Читати ще >
Клієнт-сервер java (реферат, курсова, диплом, контрольна)
Лабораторна робота з курсу:
«Програмне забезпечення мережевих технологій»
Львів 2011
1. Короткі теоретичні відомості
java серверний мова бібліотека Багато програмних засобів для Інтернету базуються на використанні TCP/IP протоколу. Цей протокол побудований на основі використання мережевих з'єднань — з'єднання спочатку налагоджується, потім здійснюється передача даних, а після цього з'єднання переривається. При створенні серверної програми використовується мережеве з'єднання до програм, що знаходяться на інших комп’ютерах. При з'єднанні відкривається порт з деяким стандартним номером і програма переходить в стан очікування на під'єднання клієнтських програм. При здійсненні з'єднання між клієнтом і сервером останній пропонує першому продовжити взаємодію через порт з іншим номером (ефемерним портом). Через звільнений порт зі стандартним номером будуть встановлюватись нові зв’язки. Номери портів TCP/IP призначаються комітетом IANA (Internet Assigned Numbers Authority). Стандартні номери знаходяться в діапазоні 1ч1023, ефемерні - 1024ч5000.
TCP/IP — сокети (socket) — порти комп’ютерів — використовуються для реалізації двонаправлених з'єднань між двома вузлами мережі Інтернет. Сокети дозволяють організувати взаємодію повноцінних програм і аплетів Java через мережу Internet. Це створює можливості опрацювання інформації за схемою клієнт — сервер, де в ролі сервера може виступати комп’ютер, під'єднаний до мережі, а не тільки Web-сервер. Робоча станція може виступати одночасно у ролі сервера чи клієнта.
Постановка завдання
1. Створити базу даних, що містить декілька таблиць.
2. Запрограмувати доповнення записів даних в таблицях.,
3. Запрограмувати видалення записів даних.
4. Запрограмувати фільтрацію даних.
5. Написати фрагменти програм доступу до СУБД, формування запитів, отримання таблиць — результатів запитів, перенесення результатів
6. Створити клас клієнта та сервера.
2. Хід виконання роботи
1. Код програми:
import java.io.*;
import java.net.*;
import java.sql.*;
public class hs {
// -add
public static void add (String name, String surname, String group, String institute, Statement st, PrintWriter out)
{
if (name.equals («„)||surname.equals (“»)||group.equals ("")||institute.equals (""))
{
out.println («Невдалий ввід»);
}
else
{
int id_st = 0,
id_gr = 0,
id_in = 0,
count = 0;
try
{
ResultSet rs1 = st. executeQuery («Select id from student»);
while (rs1.next ())
{
id_st = rs1. getInt («id»);
}
id_st+=1;
rs1 = st. executeQuery («Select id, group1 from groupdb»);
while (rs1.next ())
{
if (group.equals (rs1.getString («group1»))) id_gr = rs1. getInt («id»);
count = rs1. getInt («id»);
}
if (id_gr == 0)
{
id_gr = count+1;
int rs5 = st. executeUpdate («insert into groupdb (group1, id) values ('"+group+"', ' „+id_gr+“ ')»);
}
rs1 = st. executeQuery («Select id, institute1 from institute»);
while (rs1.next ())
{
if (institute.equals (rs1.getString («institute1»))) id_in = rs1. getInt («id»);
count = rs1. getInt («id»);
}
if (id_in == 0)
{
id_in = count+1;
int rs4 = st. executeUpdate («insert into institute (institute1, id) values ('"+institute+"', ' „+id_in+“ ')»);
}
int rs2 = st. executeUpdate («insert into student (name, surname, id) values ('"+name+"', ' „+surname+“ ', ' „+id_st+“ ')»);
int rs3 = st. executeUpdate («insert into main (id_st, id_gr, id_in) values ('"+id_st+"', ' „+id_gr+“ ', ' „+id_in+“ ')»);
}
catch (SQLException e) {System.out.println («Error"+e);}
}
out.println («exit»);
}
// -del
public static void del (String id, Statement st, PrintWriter out)
{
try {
int f=0;
ResultSet res = st. executeQuery («Select * from student where id ="+id);
while (res.next ())
{
f=1;
}
if (f==1)
{
st.executeUpdate («delete from main where id_st = «+id);
st.executeUpdate («delete from student where id = «+id);
out.println («Добре»);
}
else out. println («Такого id немає в базі»);
}
catch (SQLException e) {System.out.println («Таких записів немає»);}
out.println («exit»);
}
// -vyvid
public static void vyvid (Statement st, PrintWriter out)
{
try {
ResultSet r = st. executeQuery («select * from student join groupdb join institute join main on student. id=main.id_st and groupdb. id = main. id_gr and institute. id = main. id_in»);
while (r.next ())
{
out.println (r.getString («id»)+". «);
out.println (r.getString («name»)+"");
out.println (r.getString («surname»)+"");
out.println (r.getString («group1″)+»");
out.println (r.getString («institute1»));
}
} catch (SQLException e) {
System.out.println («Error"+e);
}
out.println («exit»);
}
// -filtr
public static void filtr (Statement st, String tb_name, String f_name, String f_value, PrintWriter out)
{
boolean flag = true;
try {
ResultSet r = st. executeQuery («select * from student join groupdb join institute join main on student. id=main.id_st and groupdb. id = main. id_gr and institute. id = main. id_in and «+tb_name+». «+f_name+» = '"+f_value+ «'»);
while (r.next ())
{
out.println (r.getString («name»)+"");
out.println (r.getString («surname»)+"");
out.println (r.getString («group1″)+»");
out.println (r.getString («institute1″)+"n»);
flag = false;
}
} catch (SQLException e) {}
if (flag) out. println («Записів не знайдено»);
out.println («exit»);
}
// -query
public static void query (String sql, String col, PrintWriter p, BufferedReader in, Statement st)
{
try
{
ResultSet res = st. executeQuery (sql);
while (res.next ())
{
p.println (res.getString (col));
}
}
catch (SQLException e) {}
p.println («exit»);
}
// -short_query
public static void short_query (String sql, Statement st, PrintWriter p)
{
try
{
ResultSet res = st. executeQuery (sql);
while (res.next ())
{
p.println (res.getString («id»));
p.println (res.getString («name»));
p.println (res.getString («surname»));
}
}
catch (Exception e){}
p.println («exit»);
}
// -global
static Connection conn = null;
static Statement st = null;
// -main
public static void main (String[] args) throws IOException
{
System.out.println («Welcome to Server side»);
BufferedReader in = null;
PrintWriter out= null;
ServerSocket servers = null;
Socket fromclient = null;
try {
servers = new ServerSocket (4444);
} catch (IOException e) {
System.out.println («Couldn't listen to port 4444»);
System.exit(-1);
}
try {
System.out.print («Waiting for a client…»);
fromclient= servers. accept ();
System.out.println («Client connected»);
}
catch (IOException e) {
System.out.println («Can't accept»);
System.exit(-1);
}
in = new BufferedReader (new InputStreamReader (fromclient.getInputStream ()));
out = new PrintWriter (fromclient.getOutputStream (), true);
String input, output;
try
{
String userName = «root»;
String password = «vonk11»;
String url = «jdbc:mysql://localhost/test»;
Class.forName («com.mysql.jdbc. Driver»).newInstance ();
conn = DriverManager.getConnection (url, userName, password);
System.out.println («Database connection established»);
Statement st = conn.createStatement ();
while (true)
{
input = in. readLine ();
if (input.equals («vyvid»)) vyvid (st, out);
if (input.equals («add»))
{
String a = in. readLine (),
b = in. readLine (),
c = in. readLine (),
d = in. readLine ();
add (a, b, c, d, st, out);
}
if (input.equals («del»))
{
String a = in. readLine ();
del (a, st, out);
}
if (input.equals («filtr»)) {
String a = in. readLine (),
b = in. readLine (),
c = in. readLine ();
filtr (st, a, b, c, out);}
if (input.equals («query»))
{
String a = in. readLine (),
b = in. readLine ();
query (a, b, out, in, st);
}
if (input.equals («short»))
{
String a = in. readLine ();
short_query (a, st, out);
}
}
}
catch (Exception e) {System.out.println («Error» + e);}
out.close ();
in.close ();
fromclient.close ();
servers.close ();
}
3. Протокол виконання програми