Автор: Пользователь скрыл имя, 17 Декабря 2012 в 23:56, диссертация
Постановка задачи: Создать клиент-серверное приложение для обмена сообщениями в реальном времени.
Детальное описание: Клиентская часть должна быть реализована в графическом варианте. После запуска клиент пытается установить соединение с сервером, получает список всех доступных для общения пользователей, которым может отправлять/получать сообщения. Необходимо оповещать клиента об изменение в доступном списке контактов.
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.
import javax.xml.parsers.
import javax.xml.parsers.
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.
} catch (IOException e) {
e.printStackTrace();
}
this.start();
}
public void parseList(String userList)
throws SAXException, IOException, ParserConfigurationException {
this.userList.clear();
DocumentBuilderFactory dbf
= DocumentBuilderFactory.
DocumentBuilder docBuilder = dbf.newDocumentBuilder();
Document doc = docBuilder.parse(new
ByteArrayInputStream(userList.
NodeList items = doc.getDocumentElement().
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()
this.userList.addElement(list.
}
}
}
}
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.
return input.readLine();
}
@Override
public void sendRequest(String message) throws IOException {
PrintWriter output = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(userSocket.
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;
}
}
Информация о работе Создание системы обмена мгновенными сообщениями