`
jiqimiao
  • 浏览: 58797 次
  • 性别: Icon_minigender_1
  • 来自: 常州
社区版块
存档分类
最新评论

简单的服务器和客户端程序代码实例

 
阅读更多

简单的服务器和客户端程序代码实例

练习Socket,DataInputStream,DataOutputStream,Thread,ActionListener的应用,功能很简单就是客户端输入用户名回车服务器校验用户名是否合法,我定义了只有jiqimiao时才是合法的。

服务器端代码如下:

importjava.awt.*;
importjava.io.*;
importjava.net.*;
importjava.util.*;

importjavax.swing.*;

/**
*服务器端程序
*
@author左杰
*
*/
publicclassTestServerextendsJFrame{
/**
*
*/
privatestaticfinallongserialVersionUID=-4148974450944551683L;

privateJTextAreajta=newJTextArea();

publicstaticvoidmain(String[]args){
newTestServer();
}

publicTestServer(){
this.getContentPane().setLayout(newBorderLayout());
this.getContentPane().add(newJScrollPane(jta),BorderLayout.CENTER);
setTitle(
"server");
setSize(
500,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(
true);
try{
ServerSocketserverSocket
=newServerSocket(5000);//绑定服务器端口
jta.append("serverstartat"+newDate()+" ");
while(true){
Socketsocket
=serverSocket.accept();//服务器监听
//启动监听线程
HandleClintthread=newHandleClint(socket);
thread.start();
}
}
catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
/**
*接收和发送客户端的线程
*
@author左杰
*
*/
classHandleClintextendsThread{
privateSocketsocket;

publicHandleClint(Socketsocket){
this.socket=socket;
}

publicvoidrun(){
try{
DataInputStreaminputFromClient
=newDataInputStream(socket
.getInputStream());
DataOutputStreamoutputToClient
=newDataOutputStream(socket
.getOutputStream());
while(true){
Stringins
=DataInputStream.readUTF(inputFromClient);//接收客户端信息
Stringouts="您不是合法用户";
if(ins.equals("jiqimiao")){
outs
="欢迎您:"+ins;
}
outputToClient.writeUTF(outs);
//发送到客户端信息
jta.append(outs+" ");
}
}
catch(Exceptione){
}
}
}
}

客户端代码如下:

importjava.awt.BorderLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.io.IOException;
importjava.net.Socket;

importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JScrollPane;
importjavax.swing.JTextArea;
importjavax.swing.JTextField;

/**
*客户端程序
*
@author左杰
*
*/
publicclassTestClientextendsJFrameimplementsActionListener{
/**
*
*/
privatestaticfinallongserialVersionUID=-1751294222460334070L;
privateJTextAreajta=newJTextArea();
privateJTextFieldjtf=newJTextField();
privateDataOutputStreamtoServer;
privateDataInputStreamfromServer;
publicstaticvoidmain(String[]args){
newTestClient();
}
publicTestClient(){
JPanelp
=newJPanel();
p.setLayout(
newBorderLayout());
p.add(
newJLabel("请输入用户名:"),BorderLayout.WEST);
p.add(jtf,BorderLayout.CENTER);
jtf.setHorizontalAlignment(JTextField.LEFT);

this.getContentPane().setLayout(newBorderLayout());
this.getContentPane().add(p,BorderLayout.NORTH);
this.getContentPane().add(newJScrollPane(jta),BorderLayout.CENTER);
jtf.addActionListener(
this);//添加事件侦听
setTitle("Client");
setSize(
500,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(
true);
try{
Socketsocket
=newSocket("localhost",5000);//链接指定服务器和端口
this.fromServer=newDataInputStream(socket.getInputStream());
this.toServer=newDataOutputStream(socket.getOutputStream());
}
catch(IOExceptione){
//TODOAuto-generatedcatchblock
jta.append(e.toString()+" ");
}

}
publicvoidactionPerformed(ActionEvente){//定义侦听器
if(e.getSource()instanceofJTextField){
try{
Stringtos
=jtf.getText().trim();
toServer.writeUTF(tos);
toServer.flush();
Stringgets
=DataInputStream.readUTF(fromServer);;
jta.append(gets
+" ");
}
catch(IOExceptione1){
//TODOAuto-generatedcatchblock
System.err.println(e1);
}


}
}

}

大家共同学习,共同进步。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics