0

1.私はJavaが初めてなので、初心者ですが、このチャットサーバーとクライアントを作成しようとしていますが、これまでのところサーバーは実行されますが、クライアントはタイトルにエラーを返さず、助けてください。

import java.net.*;
import java.io.*;
import java.awt.*;

@SuppressWarnings("serial")
class chatClient extends Frame implements Runnable
{
Socket soc;    
TextField tf;
TextArea ta;
Button btnSend,btnClose;
String sendTo;
String LoginName;
Thread t=null;
DataOutputStream dout;
DataInputStream din;
chatClient(String LoginName,String chatwith) throws Exception
{
    super(LoginName);
    this.LoginName=LoginName;
    sendTo=chatwith;
    tf=new TextField(50);
    ta=new TextArea(50,50);
    btnSend=new Button("Send");
    btnClose=new Button("Close");
    soc=new Socket("127.0.0.1",5211);

    din=new DataInputStream(soc.getInputStream()); 
    dout=new DataOutputStream(soc.getOutputStream());        
    dout.writeUTF(LoginName);

    t=new Thread(this);
    t.start();

}
@SuppressWarnings("deprecation")
void setup()
{
    setSize(600,400);
    setLayout(new GridLayout(2,1));

    add(ta);
    Panel p=new Panel();

    p.add(tf);
    p.add(btnSend);
    p.add(btnClose);
    add(p);
    show();        
}
@SuppressWarnings("deprecation")
public boolean action(Event e,Object o)
{
    if(e.arg.equals("Send"))
    {
        try
        {
            dout.writeUTF(sendTo + " "  + "DATA" + " " + tf.getText().toString());            
            ta.append("\n" + LoginName + " Says:" + tf.getText().toString());    
            tf.setText("");
        }
        catch(Exception ex)
        {
        }    
    }
    else if(e.arg.equals("Close"))
    {
        try
        {
            dout.writeUTF(LoginName + " LOGOUT");
            System.exit(1);
        }
        catch(Exception ex)
        {
        }

    }

    return super.action(e,o);
}
public static void main(String[] args) throws Exception
{
    chatClient Client=new chatClient(args[0], args[1]);
    Client.setup();                
}    
public void run()
{        
    while(true)
    {
        try
        {
            ta.append( "\n" + sendTo + " Says :" + din.readUTF());

        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }
}
}
4

3 に答える 3

0

私はあなたがそれを始めていると思います:

java chatClient

ログイン名とチャット相手を指定する必要があります。

java chatClient fred george

それ以外の場合argsは空の配列になるため、args[0]or args[1]in の評価mainは失敗します。

また、インデントと命名の両方を修正することを強くお勧めします。標準のJava 命名規則に従ってください。

于 2013-11-05T19:59:43.557 に答える
0

プログラム内の唯一の配列は にあるようargsですmain。コマンド ライン引数を入力しない場合、配列は length0になり、アクセスする要素はありません。

2 つの引数が必要なため、アクセスする前に配列の長さを確認してください。

if (args.length >= 2)
{
    chatClient Client=new chatClient(args[0], args[1]);
    Client.setup();   
}
else
{
    // Handle error.
}
于 2013-11-05T20:00:06.937 に答える