以下程序在jdk1.4.1中调试通过;
os : windows xp
本程序有一个空发消息的处理问题,希望大家多多指教!
mainto:yzmhacke.163.com
客户端的程序:
//client.java
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
public class client extends frame implements
actionlistener,runnable{
private textfield tf1,tf2;
private label la1,la2;
private textarea ta1,ta2;
private socket s;
private button b,l;
private bufferedreader br=null;
private printwriter pw=null;
// static string port,ip;
public static void main(string arg[]) {
new client();
//if(arg[0].length()!=0) ip=arg[0];
//if(arg[1].length()!=0) port=arg[1];
}
//完成构造函数的说明
public client(){
//完成ip地址与端口的建立
setlayout(new gridlayout(6,1));
panel panel=new panel();
tf1=new textfield(20);
tf2=new textfield(10);
la1=new label("ip地址 ");
la2=new label("对应端口 ");
button l=new button("连接");
l.setbackground(color.green);
//l.addactionlistener(this);
panel.add(la1);
panel.add(tf1);
panel.add(la2);
panel.add(tf2);
panel.add(l);
add(panel);
//输入框与显示框
ta1=new textarea(100,300);
add(new label("消息框"));
add(ta1);
add(new label("用户输入框"));
ta2=new textarea(30,300);
add(ta2);
panel p2=new panel();
b=new button("发送");
b.setbackground(color.yellow);
p2.add(b);
add(p2);
settitle("客户端");
setsize(300,450);
setresizable(false);
setvisible(true);
//捕获各种的异常
l.addactionlistener(this);
// b.addactionlistener(this);
//增加了一个关闭的事件
addwindowlistener(new windowadapter(){
public void windowclosing(windowevent exit){ system.exit(0);}});
thread threadreader=new thread(this);
threadreader.start();
b.addactionlistener(this);
}
public void run(){
while(true){
try{
ta1.append("/n #_____________________________#/n"+br.readline());
}catch(exception exo){}
}
}
//客户向服务端发送消息啊!
public void actionperformed(actionevent e)
{ string command=e.getactioncommand();
if("发送".equals(command))
{
if(ta2.gettext().trim()!=null)
{
ta1.append("/n 客户端的消息:/n"+ta2.gettext());
pw.println(ta2.gettext()+"/n");//" /n 客户短信: /n "
}
else
if(ta2.gettext().trim()==null)
{ ta1.append("请输入完整的ip地址与端口以及、/n"+"不能空发消息");}
ta2.settext(" "); //结束的时候清空文本框
}
else
if("连接".equals(command)){
try
{
//借助连接的按钮完成远程pc的连接的工作。建立输入与输出流两个工具
s=new socket(tf1.gettext().tostring(),integer.parseint((tf2.gettext()).trim()));
//integer.parseint((tf2.gettext()).trim())
br=new bufferedreader(new inputstreamreader(s.getinputstream()));
pw=new printwriter(s.getoutputstream(),true);
//ta1.append("/n 服务端来消息:/n"+br.readline());
}
catch(exception ex){
//ta1.append("产生了输入输出异常无法完成交互!");
}
}
}
}
/*******************服务端的程序*************************/
//server.java
package server;
import java.io.*;
import java.awt.*;
import java.net.*;
import java.awt.event.*;
public class server{
public static void main(string arg[]){
serverservice myserver=new serverservice(8000,10);
}
}
//交互端的服务窗口
class servicethread extends frame
implements actionlistener,runnable{
serverservice fatherlistener;
socket connectedclient;
thread connectedthread;
panel listenepanel;
textarea servermeg;
textarea serverwrite;
label la;
button bt;
bufferedreader in;
printwriter out;
public servicethread(serverservice sv,socket s){
//容器与格子组建的结合
fatherlistener=sv;
connectedclient=s;
connectedthread =new thread(this);
//采用线程的目的是利用他的并发机制,实现多个任务
//在当前的类中(this)通过runnabel()接口实现thread()的run()方案
settitle("answer client");
setlayout(new gridlayout(4,1));
//采用格子组建的形式完成组建的安排
servermeg=new textarea(null,5,45,textarea.scrollbars_vertical_only);
//添加各种组建到容器当中
listenepanel=new panel();
listenepanel.add(servermeg);
add(listenepanel);
addwindowlistener(new windowadapter(){
public void windowclosing(windowevent e){
//((frame)e.getwindow()).dispose();//保留的语句
system.exit(0);
}});
//第二个panel()
la=new label("服务端消息输入框...............");
add(la);
serverwrite=new textarea(10,50);
add(serverwrite);
//add(p2);
setsize(355,360);
panel p3=new panel();
bt=new button("传送");
bt.addactionlistener(this);
p3.add(bt);
add(p3);
setresizable(false);
闽公网安备 35060202000074号