Описание соккетов на языке java
Рефераты >> Коммуникации и связь >> Описание соккетов на языке java

Для создания подключения с сервером, пользуясь кнопкой “Connect”, выделим её в режиме Design, и в панели Inspector, на вкладке Events находим строку MouseClicked и нажимаем два раза по её полю. Автоматически переходите в раздел Source и описываем её:

void jButton1_mouseClicked(MouseEvent e) {

String adress; {adress = choiceControl1.getSelectedItem();

try {

s=new Socket(adress,9999);

is=s.getInputStream();

os=s.getOutputStream();

str=new String(buf,0,length);

str="Connect";

buf=str.getBytes();

os.write(buf);

length=is.read(buf);

textFieldControl1.setText(str);

jButton2.enable();

jButton2.setEnabled(true);

jButton1.disable();

jButton1.setEnabled(false);

jButton3.enable(true); }

catch(Exception ioe) { }

}}

Первая строка генерируется автоматически программой после операции MouseClicked.

Затем мы обращаем внимание кнопки на оно в котором указывается путь соединения.

И наконец создаём соккет и потоки входящий и выходящий.

Всё что идёт ниже, необязательно. В нашем случае это инициализация подключения, путём отправки слова Connect на сервер, после чего оно возвращается обратно при осуществлении подключения. Далее следует отключение на время некоторых кнопок, для исключения ошибок со стороны пользователя.

Ниже описания кнопок

Disconnect:

void jButton2_mouseClicked(MouseEvent e) {

try {

is.close();

os.close();

s.close();

}

catch (Exception ioe){}

}

Sand:

void jButton3_mouseClicked(MouseEvent e) {

try{

String latter=jTextArea1.getText();

for(int i=0;i<latter.length();i++)

os.write((byte)latter.charAt(i));

os.write(0);

os.flush();

}

catch(Exception ioe){}

}

Reciev:

void jButton4_mouseClicked(MouseEvent e) {

try

{

length=is.read(buf);

String latter=new String(buf,0,length);

jTextArea2.setText(latter);

}

catch(Exception ioe){}

}}

Строка os.write(buf) записывет данные в буфер, который в последствии через выходной поток может отправиться на сервер. Соответственно что бы прочитать из потока, нужно воспользоваться следующим кодом:

length=is.read(buf)

Кодприложения SocketClient

import java.awt.*;

import java.awt.event.*;

import borland.jbcl.control.*;

import borland.jbcl.layout.*;

import com.sun.java.swing.*;

import java.net.*;

import java.io.*;

import java.util.*;

public class Frame1 extends DecoratedFrame {

//Construct the frame

BorderLayout borderLayout1 = new BorderLayout();

XYLayout xYLayout2 = new XYLayout();

BevelPanel bevelPanel1 = new BevelPanel();

JButton jButton1 = new JButton();

JButton jButton2 = new JButton();

JButton jButton3 = new JButton();

JButton jButton4 = new JButton();

TextFieldControl textFieldControl1 = new TextFieldControl();

TextControl textControl1 = new TextControl();

TextControl textControl2 = new TextControl();

JTextArea jTextArea1 = new JTextArea();

JTextArea jTextArea2 = new JTextArea();

ChoiceControl choiceControl1 = new ChoiceControl();

Socket s; int length; String str;

InputStream is;

OutputStream os;

byte buf[]=new byte[512];

public Frame1() {enableEvents(AWTEvent.WINDOW_EVENT_MASK);

try{jbInit();

}

catch (Exception e) {

e.printStackTrace();

}

}

//Component initialization

private void jbInit() throws Exception {

this.setLayout(borderLayout1);

this.setSize(new Dimension(433, 334));

this.setTitle("Frame Title");

choiceControl1.setItems(new String[] {"localhost", "192.168.1.14", "192.168.1.15", "192.168.1.16", "192.168.1.17", "192.168.1.18", "192.168.1.19", "192.168.1.20", "192.168.1.21",});

textControl1.setFont(new Font("Dialog", 1, 12));

textControl1.setText("Send:");

textControl2.setFont(new Font("Dialog", 1, 12));

textControl2.setText("Reciev:");

choiceControl1.addItemListener(new java.awt.event.ItemListener() {

public void itemStateChanged(ItemEvent e) {

choiceControl1_itemStateChanged(e);

}

});

jButton1.setLabel("Connect");

jButton1.setFont(new Font("Dialog", 0, 14));

jButton1.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(MouseEvent e) {

jButton1_mouseClicked(e);

}

});

jButton2.setLabel("Disconnect");

jButton2.setFont(new Font("Dialog", 0, 14));

jButton2.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(MouseEvent e) {

jButton2_mouseClicked(e);

}

});

jButton3.setLabel("Send");

jButton3.setFont(new Font("Dialog", 0, 16));

jButton3.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(MouseEvent e) {

jButton3_mouseClicked(e);

}

});

jButton4.setLabel("Reciev");

jButton4.setFont(new Font("Dialog", 0, 16));

jButton4.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(MouseEvent e) {

jButton4_mouseClicked(e);

}

});

bevelPanel1.setLayout(xYLayout2);

this.add(bevelPanel1, BorderLayout.CENTER);

bevelPanel1.add(jButton1, new XYConstraints(211, 8, 97, 34));

bevelPanel1.add(jButton2, new XYConstraints(312, 8, 105, 34));

bevelPanel1.add(jButton3, new XYConstraints(285, 124, 96, 41));

bevelPanel1.add(jButton4, new XYConstraints(287, 222, 97, 38));

bevelPanel1.add(jTextArea1, new XYConstraints(5, 113, 234, 70));

bevelPanel1.add(jTextArea2, new XYConstraints(6, 205, 233, 69));

bevelPanel1.add(choiceControl1, new XYConstraints(8, 8, 191, 23));

bevelPanel1.add(textFieldControl1, new XYConstraints(7, 49, 190, -1));

bevelPanel1.add(textControl1, new XYConstraints(5, 90, 75, 22));

bevelPanel1.add(textControl2, new XYConstraints(7, 186, 66, 19));

}

void choiceControl1_itemStateChanged(ItemEvent e) {}

void jButton1_actionPerformed(ActionEvent e) {}

void jButton1_mouseClicked(MouseEvent e) {

String adress; {adress = choiceControl1.getSelectedItem();

try {

s=new Socket(adress,9999);

is=s.getInputStream(); создание вх. и вых.

os=s.getOutputStream(); потоков.

str=new String(buf,0,length);

str="Connect";

buf=str.getBytes();

os.write(buf); описание кнопки ‘Connect”

length=is.read(buf);


Страница: