當前位置:編程學習大全網 - 編程語言 - Luna編程

Luna編程

導入Java . awt . *;

導入Java . awt . event . *;

導入Java . io . io exception;

導入Java . net . *;

導入Java . io . *;

公共類chatClient擴展框架{

/**

* @param args

*/

TextField TF txt = new TextField();

TextArea taContent = new TextArea();

套接字s = null

DataOutputStream dos = null

DataInputStream dis = null

private boolean b connected = false;

公共靜態void main(String[] args) {

新聊天客戶端()。lunach frame();

}

私有類RecvThread實現Runnable{

公共無效運行(){

嘗試{

while(b已連接){

string str = dis . read utf();

tacontent . settext(tacontent . gettext()+str+' \ n ');

}

}catch(IOException e){

e . printstacktrace();

}

}

}

public void lunachFrame(){

this.setLocation(400,300);

this.setSize(300,300);

//this . set layout(new FlowLayout());

this.add(tfTxT," South ");

this.add(taContent," North ");

pack();

TF txt . addactionlistener(new TF listener());

this . addwindowlistener(new window close());

this . set visible(true);

connect();

新線程(新RecvThread())。start();

}

公共void connect(){

嘗試{

s=新插座(" 127.0.0.1 ",8888);

dos = new data output stream(s . get output stream());

dis = new data inputstream(s . getinputstream());

System.out.println("connected!");

bConnected = true

} catch (UnknownHostException e) {

e . printstacktrace();

} catch (IOException e) {

e . printstacktrace();

}

}

公共void disconnect(){

嘗試{

dos . close();

s . close();

} catch(異常e) {

// TODO自動生成catch塊。

e . printstacktrace();

}

}

類WindowClose擴展WindowAdapter{

@覆蓋

public void window closing(window event e){

// TODO自動生成方法存根

system . exit(0);

disconnect();

}

}

私有類TFListener實現ActionListener{

public void action performed(action event e){

String str=tfTxT.getText()。trim();//trim刪除兩邊的空格。

//tacontent . settext(str);

TF txt . settext(" ");

嘗試{

dos . write utf(str);

dos . flush();

//dos . close();

} catch (IOException e1) {

e 1 . printstacktrace();

}

}

}

}

======================================

導入Java . io . io exception;

導入Java . net . *;

導入Java . io . *;

導入Java . util . *;

公共類ChatServer {

列表& lt客戶端& gtclients = new ArrayList & lt客戶端& gt();

客戶端c =空;

公共靜態void main(String[] args){

新的ChatServer()。start();

}

public void start(){

boolean started = false

ServerSocket ss = null

DataInputStream dis = null

嘗試{

ss = new server socket(8888);

開始=真;

}catch(異常e)

{

e . printstacktrace();

}

嘗試{

當(開始){

socket s = ss . accept();

c =新客戶;//啟動線程,實現run()方法。

System.out.println("客戶端已連接!");

新線程(c)。start();//啟動start方法。循環。start是Thread中的壹個方法,與上面的start無關。

clients . add(c);

//dis . close();

}

} catch(異常e) {

//e . printstacktrace();

}

最後{

嘗試{

ss . close();

} catch (IOException e) {

// TODO自動生成catch塊。

e . printstacktrace();

}

}

}

類客戶端實現Runnable{

私有套接字s;

私有DataInputStream dis = null

private boolean b connected = false;

private data output stream dos = null;

公共客戶端(套接字){

this.s = s

嘗試{

dis = new data inputstream(s . getinputstream());

dos = new data output stream(s . get output stream());

bConnected = true

} catch (IOException e) {

// TODO自動生成catch塊。

e . printstacktrace();

}

}

公共void send(字符串str)引發異常{

dos . write utf(str);

}

公共無效運行(){

嘗試{

while(b已連接){

string str = dis . read utf();

system . out . println(str);

for(int I = 0;我& ltclients . size();i++){

c = clients . get(I);

發送(str);

}

/*for(叠代器& lt客戶端& gtit = clients . iterator();it . has next();){

client c = it . next();

發送(str);

}*/

}

}catch(SocketException e){

clients.remove(此);

System.out.println("客戶離線");

}

捕捉(異常e){

System.out.println("客戶端關閉");

}

捕捉(異常e){

//e . printstacktrace();

}

最後{

嘗試{

如果(dis!= null)dis . close();

如果(dos!= null)dos . close();

如果(s!= null)s . close();

} catch(異常e1) {

// TODO自動生成catch塊。

//e 1 . printstacktrace();

}

}

}

}

}

首先是客戶,

第二個是服務器端。

  • 上一篇:@C語言大神:把整數賦值給某壹類型的變量。程序應該怎麽寫?求解釋、壹個例子就夠了
  • 下一篇:UG的學習方法
  • copyright 2024編程學習大全網