admin 管理员组

文章数量: 887053


2024年1月14日发(作者:handicap是什么意思)

JAVA实现即使通讯的代码 图形界面

//////////////////////////////////////////////////////////

//用 Java 编写的聊天器,可以当 服务器 或者 是客户端,一对一,自定义对方 IP 及 端口。

//虽然名为 LANChat ,但不限于局域网。对象甚至可以是某种 “服务器”。

///////////////////////////////////////////////////////////

import .*;

import .*;

import .*;

import .*;

import .*;

//////////////////////////////////////////////////////////

public class LANChatV12{

public static void main(String args[]){

LoginFrame lf = new LoginFrame("输入目标");

();

}

}

/////////////////////////////////////////////////////////

class LoginFrame extends JFrame{

JButton BOK;

JLabel LdesAddr, Lport;

JTextField TFdesAddr, TFport;

String desAddr, port;

LoginFrame(){}

LoginFrame(String title){

super(title);

Frame t = this;

BOK = new JButton("确定");

LdesAddr = new JLabel("目标 IP");

Lport = new JLabel("端口 ");

TFdesAddr = new JTextField(desAddr,12);

TFport = new JTextField(port,12);

//oChar('*');

ionListener(new BOKListener(t));

setBackground();

setBounds(350,250,200,128);

setLayout(new FlowLayout(,5,7));

add(LdesAddr);

add(TFdesAddr);

add(Lport);

add(TFport);

add(BOK);

setResizable(false);

//setVisible(true);

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

(0);

}

});

}

class BOKListener implements ActionListener{

Frame t;

BOKListener(){}

BOKListener(Frame t){

this.t = t;

}

public void actionPerformed(ActionEvent e){

desAddr = t();

port = t();

ible(false);

Messenger m = new Messenger(desAddr, port);

();

}

}

}

/////////////////////////////////////////////////////

class Messenger extends Thread{

String desAddr;

String port;

int iport;

TextArea content, send;

JButton Bsend;

ChatFrame cf;

String title;

Socket client;

ServerSocket ss;

OutputStreamWriter osw = null;

InputStreamReader isr = null;

BufferedReader br;

String line;

boolean flag;//端口号是否正确

boolean cbc; //can be client ?

int tryTurns = 3; //客户方式尝试的次数

Messenger(){}

Messenger(String desAddr, String port){

super("LANChatMessenger");

content = new TextArea("",0,0,BARS_VERTICAL_ONLY);

send = new TextArea("",0,0,BARS_VERTICAL_ONLY);

Bsend = new JButton("发送");

bled(false);

title = "与 " + desAddr +" 聊天";

flag = true;

cbc = true;

cf = new ChatFrame(title, content, send, Bsend);

();

r = desAddr;

= port;

try{

iport = nt(port);

}catch(NumberFormatException nfe){

("非法的 端口,程序 4 秒后关闭。n");

flag = false;

}

}

public void run(){

if(! flag){

try{

(4000);

}catch(InterruptedException ie){

(0);

}

(0);

}

("正在以客户端方式进行连接.....n");

do{

cbc = true;

try{

client = new Socket(desAddr,iport);

}catch(Exception e){

("错误,无法连接地址:" + desAddr +":"+ port + 'n');

("等待 1 秒再连接,剩余 [ " + (tryTurns -1) + " ]次。n");

cbc = false;

try{

(1000);

}catch(InterruptedException ie){

(0);

}

}

--tryTurns;

}while((tryTurns > 0) && ! cbc);

if(cbc){

("连接成功,可以开始了。" + "nn");

le("与 " + desAddr + ":" + port + " 聊天");

tFocus();

}

else{

("客户端方式失败,现在启动服务器并等待连接。" + 'n');

try{

ss = new ServerSocket(iport);

}catch(IOException ioe){

("n无法创建服务,程序将在 4 秒后退出。n");

try{

(4000);

}catch(InterruptedException ie){

(0);

}

(0);

}

try{

le("等待连接中....在端口:" + port);

client = ();

}catch(Exception e){

("() 方法失败,程序将在 4 秒后退出。n");

try{

(4000);

}catch(InterruptedException ie){

(0);

}

(0);

}

("连接成功,可以开始。" + tAddress().toString() + "nn");

le("与 " + tAddress().toString() + ":" + port + " 聊天");

tFocus();

}

try{

osw = new OutputStreamWriter(putStream());

isr = new InputStreamReader(utStream());

br= new BufferedReader(isr);

//("nbr createdn");

}catch(IOException ioe){

("创建流错误,程序将在 4 秒后退出。n");

try{

(4000);

}catch(InterruptedException ie){

(0);

}

(0);

}

bled(true);

ionListener(new BsendListener(content, send, osw));

try{

line = ne();

}catch(IOException ioe){

("流读取错误,程序将在 4 秒后退出。n");

try{

(4000);

}catch(InterruptedException ie){

(0);

}

(0);

}

while(true){

("他说 : " + line + 'n');

try{

(1000);

}catch(InterruptedException ie){

(0);

}

try{

line = ne();

}catch(IOException ioe){

("流读取错误,程序将在 4 秒后退出。n");

try{

(4000);

}catch(InterruptedException ie){

(0);

}

(0);

}

}

}

class BsendListener implements ActionListener{

TextArea content;

TextArea send;

OutputStreamWriter osw;

BsendListener(TextArea content, TextArea send, OutputStreamWriter osw){

t = content;

= send;

= osw;

}

public void actionPerformed(ActionEvent e){

String input;

input = t();

if(() > 0){

("我说 : " + input + 'n');

try{

(input + 'n', 0, () + 1);

();// 晕

}catch(Exception ee){

("不能发送 "" + input + "" , 发生了错误 : " +sage() + 'n');

}

t("");

tFocus();

}

}

}

}

///////////////////////////////////////////////////////////////

class ChatFrame extends JFrame{

TextArea content;

TextArea send;

JButton Bsend;

ChatFrame(){}

ChatFrame(String frameTitle,TextArea content, TextArea send, JButton Bsend){

super(frameTitle);

t = content;

= send;

= Bsend;

table(true);

setLayout(null);

setBounds(300,100,510,500);

add(content);

kground();

nds(2,0,500,340);

usable(true);

add(send);

nds(2,355,500,70);

usable(true);

add(Bsend);

nds(410,432,60,30);

setResizable(false);

setDefaultCloseOperation(EXIT_ON_CLOSE);

}

}


本文标签: 连接 程序 错误 方式 代码