Создание системы обмена мгновенными сообщениями

Автор: Пользователь скрыл имя, 17 Декабря 2012 в 23:56, диссертация

Описание работы

Постановка задачи: Создать клиент-серверное приложение для обмена сообщениями в реальном времени.
Детальное описание: Клиентская часть должна быть реализована в графическом варианте. После запуска клиент пытается установить соединение с сервером, получает список всех доступных для общения пользователей, которым может отправлять/получать сообщения. Необходимо оповещать клиента об изменение в доступном списке контактов.

Работа содержит 1 файл

report.doc

— 1.36 Мб (Скачать)

import java.io.ByteArrayInputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.Socket;

import java.util.ArrayList;

import java.util.List;

 

import javax.swing.DefaultListModel;

import javax.swing.ListModel;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

 

import org.w3c.dom.Document;

import org.w3c.dom.NodeList;

import org.xml.sax.SAXException;

 

 

public class UserList extends Thread implements UserListInterface {

 

private Socket userSocket;

private static DefaultListModel userList = new DefaultListModel();

 

public UserList(Socket connection) {

try {

this.userSocket = new Socket(connection.getLocalAddress().getHostAddress(), (connection.getPort()+1));

} catch (IOException e) {

e.printStackTrace();

}

this.start();

}

 

public void parseList(String userList)

throws SAXException, IOException, ParserConfigurationException { 

this.userList.clear();

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder docBuilder = dbf.newDocumentBuilder();

Document doc = docBuilder.parse(new ByteArrayInputStream(userList.getBytes()));

NodeList items = doc.getDocumentElement().getChildNodes();

for(int j = 0; j < items.getLength(); j++) {

NodeList list = items.item(j).getChildNodes();

for(int i = 0; i < list.getLength(); i++) {

if(items.item(j).getNodeName().equalsIgnoreCase("user")) {

this.userList.addElement(list.item(i).getNodeValue());

}

}

}

}

 

 

public static DefaultListModel getListModel() {

return userList;

}

 

@Override

public void run() {

while(true) {

try {

try {

this.parseList(this.getList());

} catch (Exception e) {

e.printStackTrace();

}

this.sendRequest("request");

} catch (IOException e) {

e.printStackTrace();

}

}

}

 

@Override

public String getList() throws IOException {

BufferedReader input = new BufferedReader(

new InputStreamReader(userSocket.getInputStream()));

return input.readLine();

}

 

@Override

public void sendRequest(String message) throws IOException {

PrintWriter output = new PrintWriter(

new BufferedWriter(

new OutputStreamWriter(userSocket.getOutputStream())), true);

output.println(message);

}

}

package ua.edu.sumdu.lab2.Client;

 

import java.io.IOException;

 

 

public interface UserListInterface {

 

/**

* Get user list

* @return user list

* @throws IOException

*/

public String getList() throws IOException;

 

/**

* Send request to the server

* @param message

* @throws IOException

*/

public void sendRequest(String message) throws IOException;

}

 

package ua.edu.sumdu.lab2.Client;

 

public class UsersGroup {

 

private static String user;

 

public static void setSelectedUser (String selectedUser) {

user = selectedUser;

}

 

public static String getSelectedUser() {

return user;

}

}

 

 


Информация о работе Создание системы обмена мгновенными сообщениями