Листинг программы(V) (1061334)
Текст из файла
Министерство образования России
Московский ордена Ленина, ордена Октябрьской Революции и ордена Трудового Красного Знамени государственный технический университет им. Н. Э. Баумана
| Утверждаю: | |
| Галкин В.А. | "__"_____________2009 г. |
Курсовая работа по курсу «Сетевые технологии»
«Локальная безадаптерная сеть»
Листинг программы
(вид документа)
писчая бумага
(вид носителя)
16
(количество листов)
| ИСПОЛНИТЕЛИ: | |
| студенты группы ИУ5-72 | |
| Коновалов А.В. Сивашов Ю.В. Юрченко В.А. | _____________________ _____________________ _____________________ "__"_____________2009 г. |
Содержание
1. Введение. 3
2. Физический уровень. 4
3 Канальный уровень……………………………………………………………………………………………….7
4 Прикладной уровень…………………………………………………………………………………….……….12
1. Введение.
Программный продукт написан на языке Java. При создании использовались только стандартные библиотеки.
2. Физический уровень.
import javax.comm.*;
import java.util.*;
import java.io.*;
import java.lang.*;
import java.util.concurrent.atomic.*;
public class PhisicalLayer implements SerialPortEventListener {
/**
* @param args
*/
MainForm mainForm;
DataLinkLayer DlLayer;
private AtomicLong mutex;
private long updateLong;
public PhisicalLayer()
{}
public PhisicalLayer (DataLinkLayer iDlLayer)
{
this.DlLayer = iDlLayer;
mutex = new AtomicLong();
this.updateLong = 0;
}
CommPortIdentifier portId, currentPortId;
SerialPort serialPort;
InputStream inputStream;
OutputStream outStream;
Thread readThread;
int sum = 0;
byte[] globalBufer = new byte[100];
int glBufIndex = 0;
private boolean isConnected;
public void SearchPorts(String name) {
System.setSecurityManager(null);
/*try
{
CommDriver driver = (CommDriver) Class.forName(driverName).newInstance();
driver.initialize();
} catch (Throwable e) {e.printStackTrace();}*/
Enumeration ports;
ports = CommPortIdentifier.getPortIdentifiers();
if (ports == null) {
System.out.println("No comm ports found!");
return;
} else {
while (ports.hasMoreElements()) {
currentPortId = (CommPortIdentifier) ports.nextElement();
if (currentPortId.getName().equals(name)) {
System.out.print("Порт найден\n");
this.portId = currentPortId;
break;
}
}
}
}
public void SetPortParams(int rate) {
try {
serialPort.setSerialPortParams(rate, SerialPort.DATABITS_8,
SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {
}
}
public void PortOpen() {
try {
serialPort = (SerialPort) this.portId.open("COM1", 2000);
System.out.println("port is open!\n");
} catch (PortInUseException e) {
System.out.println(portId.getName() + " in use by "
+ e.currentOwner);
}
}
public void serialEvent(SerialPortEvent event) {
switch (event.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE:
byte[] readBuffer = new byte[21];
boolean flag = true;
while (flag)
{
while (mutex.compareAndSet(0, this.updateLong))
{
flag = false;
try {
int numBytes = 0;
this.updateLong = 1;
while (this.inputStream.available() > 0) {
/*numBytes = this.inputStream.read(readBuffer);
this.sum += numBytes;
for (int i = 0; i < numBytes; i++)
{
globalBufer[this.glBufIndex] = readBuffer[i];
this.glBufIndex++;
}
if (this.sum == 21)
{
//String Phstring = new String(globalBufer, 0, this.glBufIndex) + '\n';
//mainForm.txtAreaChat.setText(new String(readBuffer, 0, numBytes ));
this.DlLayer.ReceiveDataFromPhysicalLayer(this.globalBufer, this.glBufIndex);
this.sum = 0;
this.glBufIndex = 0;
// Передать буфер целиком в канальный уровень!!!
}*/
numBytes = this.inputStream.read(readBuffer);
this.sum += numBytes;
for (int i = 0; i < numBytes; i++)
{
globalBufer[this.glBufIndex] = readBuffer[i];
this.glBufIndex++;
}
}
//String Phstring = new String(globalBufer, 0, this.glBufIndex) + '\n';
//mainForm.txtAreaChat.setText(new String(readBuffer, 0, numBytes ));
int index = 0;
while (this.glBufIndex - 21 >= 0)
{
int frameIndex;
byte[] frame = new byte[21];
for (frameIndex = 0; frameIndex < 21; frameIndex++)
{
frame[frameIndex] = this.globalBufer[index];
index++;
}
//this.DlLayer.ReceiveDataFromPhysicalLayer(this.globalBufer, this.glBufIndex);
this.sum = 0;
this.glBufIndex -= 21;
String temp = new String(frame,0,21);
this.DlLayer.ReceiveDataFromPhysicalLayer(frame,21);
}
this.updateLong = 0;
} catch (IOException e) {
}
}
}
break;
}
}
public void Start() {
String portName = "COM1";
SearchPorts(portName);
PortOpen();
SetPortParams(115600);
try {
this.outStream = serialPort.getOutputStream();
this.inputStream = serialPort.getInputStream();
} catch (IOException e) {
}
try {
serialPort.addEventListener(this);
} catch (TooManyListenersException e) {
}
serialPort.notifyOnDataAvailable(true);
//readThread = new Thread(this);
//readThread.start();
//PrintMessage();
}
public void ReceiveMessage(byte[] data)
{
try
{
//String datatext =new String(data,0,15);
this.outStream.write(data);
}
catch (IOException e)
{}
}
/*public void run() { try { Thread.sleep(20000); } catch
(InterruptedException e) { } this.ClosePort();
}*/
/*public static void main(String[] args) {
// TODO Auto-generated method stub
PhisicalLayer ph = new PhisicalLayer();
ph.run();
}*/
public void ClosePort() {
serialPort.close();
}
}
3. Канальный уровень.
import java.io.IOException;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import javax.comm.*;
public class DataLinkLayer {
private SerialPort serialPort;
private boolean isConnect;
private PhisicalLayer PhLayer;
private MainForm mainForm;
private byte SourseAddress = (byte)0xC1;
public String networkName = "4ekist";
public class UserId
{
public byte userNA;
public String usernick;
}
UserId[] UserIDArray = new UserId[10];
public DataLinkLayer(SerialPort tempPort)
{
this.serialPort = tempPort;
}
public DataLinkLayer (MainForm tmpForm)
{
this.mainForm = tmpForm;
}
//функция канального уровня реализующая проверку соединения
public void CheckConnection()
{
byte[] snap = new byte[21];
byte[] checkSnap = new byte[16];
byte[] temp = this.networkName.getBytes();
checkSnap[0] = this.SourseAddress;
for (int index = 1; index <= this.networkName.length(); index++)
{
checkSnap[index] = temp[index-1];
}
snap = this.CreateCheckSnap(checkSnap);
String DLstring = new String(snap, 0, 20) + '\n';
this.PhLayer.ReceiveMessage(snap);
}
public void ReadyToTransmit()
{
if (this.isConnect) {
}
}
public void ConnectToCOMPort()
{
if (!isConnect)
{
PhLayer = new PhisicalLayer(this);
this.PhLayer.Start();
this.isConnect = true;
}
}
//получение данных от прикладного уровня
public void ReceiveDataFromAppLayer(String text)
{
int bufSize = text.length();
byte[] receiveBuffer = new byte[bufSize];
receiveBuffer = text.getBytes();
byte[] snap = new byte[21];
int number = 0;
int currentBufSize = bufSize;
int snapCount = 0;
while(currentBufSize-15 >= 0)
{
byte[] sendBuffer = new byte[16];
for (int index = 0; index<15;index++)
{
sendBuffer[index] = receiveBuffer[index+snapCount*15];
currentBufSize -= 1;
}
if (currentBufSize != 0)
{
sendBuffer[15] = (byte)0xE0;
}
else
{
sendBuffer[15] = (byte)0xE1;
}
snap = this.CreateInformSnap(sendBuffer);
String DLstring = new String(snap, 0, 20);
this.PhLayer.ReceiveMessage(snap);
snapCount += 1;
}
if (currentBufSize != 0)
{
byte[] sendBuffer = new byte[16];
for (int index = 0; index<currentBufSize;index++)
{
sendBuffer[index] = receiveBuffer[index+snapCount*15];
}
sendBuffer[15] = (byte)0xE1;
snap = this.CreateInformSnap(sendBuffer);
String DLstring = new String(sendBuffer, 0, currentBufSize) + '\n';
this.PhLayer.ReceiveMessage(snap);
}
/*try { Thread.sleep(2000); } catch
(InterruptedException e){}*/
}
public void ReceiveDataFromPhysicalLayer(byte[] receivebuffer, int numBytes)
{
if (receivebuffer[3] == this.SourseAddress)
{
UserId tempUser = new UserId();
int count = this.UserIDArray.length;
for (int indexArr = 0; indexArr < this.UserIDArray.length; indexArr++)
{
tempUser = this.UserIDArray[indexArr];
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.















