當前位置:編程學習大全網 - 源碼下載 - 套接字工具源代碼

套接字工具源代碼

不知道怎麽說,怎麽用。我用awt寫了很長時間的代碼。感覺Java在應用上沒什麽前景,所以沒深究...現在我把重點放在J2ee上,我給妳代碼。自己感受壹下。

服務器:

導入Java . io . *;

導入Java . net . *;

導入Java . util . *;

公共類ChatServer {

boolean started = false

ServerSocket ss = null

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

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

新的ChatServer()。start();

}

public void start() {

嘗試{

ss = new server socket(8888);

開始=真;

} catch (BindException e) {

System.out.println("端口正在使用中...");

System.out.println("請關閉相關程序,重新運行服務器!");

system . exit(0);

} catch (IOException e) {

e . printstacktrace();

}

嘗試{

當(開始){

socket s = ss . accept();

客戶c =新客戶;

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

新線程(c)。start();

clients . add(c);

}

} catch (IOException e) {

e . printstacktrace();

}最後{

嘗試{

ss . close();

} catch (IOException e) {

e . printstacktrace();

}

}

}

類客戶端實現Runnable {

私有套接字s;

私有DataInputStream dis = null

private data output stream dos = null;

private boolean b connected = false;

公共客戶端(套接字){

this.s = s

嘗試{

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

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

bConnected = true

} catch (IOException e) {

e . printstacktrace();

}

}

public void send(String str) {

嘗試{

dos . write utf(str);

} catch (IOException e) {

e . printstacktrace();

}

}

公共無效運行(){

嘗試{

while(b已連接){

string str = dis . read utf();

system . out . println(str);

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

client c = clients . get(I);

發送(str);

}

}

} catch (EOFException e) {

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

} catch (IOException e) {

e . printstacktrace();

}最後{

嘗試{

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

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

如果(s!= null) {

s . close();

//s = null;

}

} catch (IOException e1) {

e 1 . printstacktrace();

}

}

}

}

}

客戶端,打開兩個就可以聊天了...

導入Java . awt . *;

導入Java . awt . event . *;

導入Java . io . *;

導入Java . net . *;

公共類ChatClient擴展框架{

套接字s = null

DataOutputStream dos = null

DataInputStream dis = null

private boolean b connected = false;

TextField TF txt = new TextField();

TextArea taContent = new TextArea();

Thread tRecv = new Thread(new RecvThread());

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

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

}

公共void launchFrame() {

setLocation(400,300);

this.setSize(300,300);

add(tfTxt,BorderLayout。南);

add(taContent,BorderLayout。北);

pack();

this . addwindowlistener(new window adapter(){

@覆蓋

public void window closing(window event arg 0){

disconnect();

system . exit(0);

}

});

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

set visible(true);

connect();

trecv . 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();

dis . close();

s . close();

} catch (IOException e) {

e . printstacktrace();

}

}

私有類TFListener實現ActionListener {

public void action performed(action event e){

String str = tfTxt.getText()。trim();

TF txt . settext(" ");

嘗試{

dos . write utf(str);

dos . flush();

} catch (IOException e1) {

e 1 . printstacktrace();

}

}

}

私有類RecvThread實現Runnable {

公共無效運行(){

嘗試{

while(b已連接){

string str = dis . read utf();

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

}

} catch (SocketException e) {

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

} catch (IOException e) {

e . printstacktrace();

}

}

}

}

  • 上一篇:兩嫌犯兩年賣6億條快遞單號,快遞單號有什麽用?
  • 下一篇:opencv是什麽
  • copyright 2024編程學習大全網