當前位置:編程學習大全網 - 源碼下載 - Javaio源代碼分析

Javaio源代碼分析

//這是壹個聊天程序。只需在ECLIPSE中運行Client.java。連接是:localhost

//服務器代碼,

打包消息;

導入Java . io . *;

導入Java . net . *;

導入Java . util . *;

公共類服務器{

公共靜態void main(String[] args)引發異常{

System.out.print("服務器");

server socket socket = new server socket(8888);

向量v =新向量();

while(true){

socket sk = socket . accept();

data inputstream in = new data inputstream(sk . getinputstream());

data output stream out = new data output stream(sk . get output stream());

v . add(sk);

新服務器線程(in,v)。start();

}

}

}

//ServerThread.java代碼

打包消息;

導入Java . net . *;

導入Java . io . *;

導入Java . util . *;

公共類ServerThread擴展線程{

DataInputStream in

矢量所有;

公共服務器線程(DataInputStream in,Vector v){

this.in = in

this . all = v;

}

公共無效運行()

{

while(真)

{

嘗試{

string s 1 = in . read utf();

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

{

object obj = all . get(I);

Socket Socket =(Socket)obj;

data output stream out = new data output stream(socket . get output stream());

out . write utf(s 1);

System.out.print(壹);

out . flush();

}

System.out.print("消息發送完畢!");

} catch(Exception e){ e . printstacktrace();};

}

}

}

//ClientFrame.java代碼

打包消息;

導入Java . awt . *;

導入Java . awt . event . *;

導入javax . swing . *;

導入Java . net . *;

導入Java . io . *;

公共類ClientFrame擴展JFrame實現ActionListener{

JButton b 1 = new JButton(" SendMessage ");

JButton b2=new JButton("鏈接服務器");

JTextField t 1 = new JTextField(20);

JTextField T2 = new JTextField(20);

JLabel l=new JLabel("輸入服務器名:");

JTextArea area = new JTextArea(10,20);

JPanel p 1 = new JPanel();

JPanel p2 = new JPanel();

JPanel P3 = new JPanel();

JPanel P4 = new JPanel();

插座插座;

公共客戶端框架()

{

this.getContentPane()。添加(p 1);

p2.add(新JScrollPane(area));

P3 . add(t 1);

P3 . add(b 1);

P4 . add(l);

P4 . add(T2);

P4 . add(B2);

p2 . set layout(new flow layout());

P3 . set layout(new flow layout());

P4 . set layout(new FlowLayout());

p 1 . set layout(new BorderLayout());

p1.add("北",p2);

p1.add("中心",P3);

p1.add("南",P4);

b 1 . addactionlistener(this);

B2 . addactionlistener(this);

this . pack();

show();

}

公共無效操作已執行(操作事件e)

{

if(e.getActionCommand()。equals("鏈接服務器"))

{

嘗試{

socket=new Socket(t2.getText(),8888);

B2 . set enabled(false);

joptionpane . showmessagedialog(this,“連接成功”);

data inputstream in = new data inputstream(socket . getinputstream());

新的ClientThread(在,區域中)。start();

}

catch(異常e1){

joptionpane . showmessagedialog(this,“連接錯誤”);

e 1 . printstacktrace();};

}

else if(e.getActionCommand()。equals("SendMessage "))

{

嘗試{

data output stream out = new data output stream(socket . get output stream());

out . write utf(t 1 . gettext());

t 1 . settext(" ");

}catch(異常e 1){ e 1 . printstacktrace();};

}

}

}

//ClientThread.java代碼

打包消息;

導入Java . net . *;

導入Java . io . *;

導入javax . swing . *;

公共類ClientThread擴展線程{

DataInputStream in

JTextArea地區;

public client thread(data inputstream in,JTextArea area){

this.in = in

this.area = area

}

公共無效運行()

{

while(true){

嘗試{

string s = in . read utf();

area.append

}

catch(異常e){ e . printstacktrace();};

}

}

}

//Client.java代碼

打包消息;

公共類客戶端{

/**

* @param args

*/

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

new client frame();

}

}

//每壹段代碼都是壹個類,所以不要放在壹個文件裏。運行Client.java。

祝妳好運!

  • 上一篇:用vb編寫了這個隨機抽取人名的抽獎系統,但會出現重復,怎麽樣做到不重復並添加壹個記錄顯示已抽到的人名
  • 下一篇:說說utf-8和gb-2312的區別。
  • copyright 2024編程學習大全網