java.net 操练
类别: JAVA教程
一个很简单的局域网聊天工具的服务器端
/*
* Created on 2005-3-18
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package netChat;
import javax.swing.*;
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
/**
* @author AppleTian
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class server extends JFrame {
private JTextField messageBox;
private JTextArea infBox;
private ObjectInputStream input;
private ObjectOutputStream output;
private ServerSocket server;
private Socket serverSocket;
public server(){
super("server");
Container c=getContentPane();
messageBox=new JTextField("");
messageBox.setEnabled(false);
messageBox.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
sendData(e.getActionCommand());
}
});
c.add(messageBox,BorderLayout.NORTH);
infBox=new JTextArea();
infBox.setFont(new Font("Serif",Font.BOLD,12));
c.add(new JScrollPane(infBox),BorderLayout.CENTER);
setSize(500,400);
setVisible(true);
}
/**
* @param actionCommand
*/
protected void sendData(String actionCommand) {
try{
output.writeObject(actionCommand);
output.flush();
infBox.append("/nsend<<"+actionCommand+">> to client.../n");
}
catch(IOException e){
infBox.append("/nExceptionIOInSendDataFunction...");
}
}
public void runServer(){
try{
server=new ServerSocket(5000,100);
while(true){
waitForConnection();
getStreams();
processConnection();
closeConnection();
}
}
catch(EOFException e){
infBox.append("/nError in runServerFuction");
}
catch(IOException e){
e.printStackTrace();
}
}
/**
*
*/
private void closeConnection() throws IOException {
infBox.append("/nclose connection...");
messageBox.setEnabled(false);
output.close();
input.close();
serverSocket.close();
}
/**
*
*/
private void processConnection() throws IOException {
String mg="/nconnection succeful";
messageBox.setEnabled(true);
output.writeObject(mg);
output.flush();
do{
try{
mg=( String )input.readObject();
infBox.append("/nsend to client: "+mg);
infBox.setCaretPosition(infBox.getText().length());
}
catch(ClassNotFoundException e){
infBox.append("/n Unkown class received...");
}
}while(mg!="end");
}
/**
*
*/
private void getStreams() throws IOException {
output=new ObjectOutputStream(serverSocket.getOutputStream());
output.flush();
input=new ObjectInputStream(serverSocket.getInputStream());
infBox.append("/nGet Streams...");
}
/**
*
*/
private void waitForConnection() throws IOException {
infBox.append("wait for a Client...");
serverSocket=server.accept();
infBox.append("connected by"+serverSocket.getInetAddress().getHostName());
}
public static void main(String[] args) {
server my=new server();
my.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
my.runServer();
}
}
客户端
/*
* Created on 2005-3-18
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package netChat;
import javax.swing.*;
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
/**
* @author AppleTian
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class client extends JFrame {
private JTextField messageBox;
private JTextArea infBox;
private ObjectInputStream input;
private ObjectOutputStream output;
private String mg="";
private String chatServer;
private Socket client;
public client(String host){
super("client....");
chatServer=host;
Container c=getContentPane();
messageBox=new JTextField();
messageBox.setEnabled(false);
messageBox.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
sendData(e.getActionCommand());
}
});
c.add(messageBox,BorderLayout.NORTH);
infBox=new JTextArea();
c.add(infBox,BorderLayout.CENTER);
setSize(500,400);
setVisible(true);
}
/**
* @param actionCommand
*/
protected void sendData(String actionCommand) {
try{
mg=messageBox.getText();
output.writeObject(mg);
output.flush();
infBox.append("/nsend to server: "+mg);
}catch(IOException e){
infBox.append("/nIOException in sendData..");
}
}
public void runClient(){
try{
connectToServer();
getStreams();
processConnection();
closeConnection();
}catch(IOException e){
infBox.append(e.toString());
}
}
/**
*
*/
private void closeConnection()throws IOException {
// TODO Auto-generated method stub
infBox.append("/nclose...");
output.close();
input.close();
client.close();
}
/**
*
*/
private void processConnection() throws IOException{
// TODO Auto-generated method stub
messageBox.setEnabled(true );
do{
try{
mg=(String )input.readObject();
infBox.append("/nFrom server: "+mg);
infBox.setCaretPosition(infBox.getText().length());
}catch(ClassNotFoundException e){
infBox.append("classNotFound.../n");
}
}while(mg!="end");
}
/**
*
*/
private void getStreams() throws IOException {
// TODO Auto-generated method stub
output=new ObjectOutputStream(client.getOutputStream());
output.flush();
input=new ObjectInputStream(client.getInputStream());
infBox.append("get the IO Stream../n");
}
/**
*
*/
private void connectToServer() throws IOException {
// TODO Auto-generated method stub
infBox.append("try connecting to server.../n");
client=new Socket(InetAddress.getByName(chatServer),5000);
infBox.append("connect to server:"+client.getInetAddress().getHostName()+"/n");
}
public static void main(String[] args) {
client p;
if(args.length==0)
p=new client("127.0.0.1");
else
p=new client(args[0]);
p.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
p.runClient();
}
}
/*
* Created on 2005-3-18
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package netChat;
import javax.swing.*;
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
/**
* @author AppleTian
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class server extends JFrame {
private JTextField messageBox;
private JTextArea infBox;
private ObjectInputStream input;
private ObjectOutputStream output;
private ServerSocket server;
private Socket serverSocket;
public server(){
super("server");
Container c=getContentPane();
messageBox=new JTextField("");
messageBox.setEnabled(false);
messageBox.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
sendData(e.getActionCommand());
}
});
c.add(messageBox,BorderLayout.NORTH);
infBox=new JTextArea();
infBox.setFont(new Font("Serif",Font.BOLD,12));
c.add(new JScrollPane(infBox),BorderLayout.CENTER);
setSize(500,400);
setVisible(true);
}
/**
* @param actionCommand
*/
protected void sendData(String actionCommand) {
try{
output.writeObject(actionCommand);
output.flush();
infBox.append("/nsend<<"+actionCommand+">> to client.../n");
}
catch(IOException e){
infBox.append("/nExceptionIOInSendDataFunction...");
}
}
public void runServer(){
try{
server=new ServerSocket(5000,100);
while(true){
waitForConnection();
getStreams();
processConnection();
closeConnection();
}
}
catch(EOFException e){
infBox.append("/nError in runServerFuction");
}
catch(IOException e){
e.printStackTrace();
}
}
/**
*
*/
private void closeConnection() throws IOException {
infBox.append("/nclose connection...");
messageBox.setEnabled(false);
output.close();
input.close();
serverSocket.close();
}
/**
*
*/
private void processConnection() throws IOException {
String mg="/nconnection succeful";
messageBox.setEnabled(true);
output.writeObject(mg);
output.flush();
do{
try{
mg=( String )input.readObject();
infBox.append("/nsend to client: "+mg);
infBox.setCaretPosition(infBox.getText().length());
}
catch(ClassNotFoundException e){
infBox.append("/n Unkown class received...");
}
}while(mg!="end");
}
/**
*
*/
private void getStreams() throws IOException {
output=new ObjectOutputStream(serverSocket.getOutputStream());
output.flush();
input=new ObjectInputStream(serverSocket.getInputStream());
infBox.append("/nGet Streams...");
}
/**
*
*/
private void waitForConnection() throws IOException {
infBox.append("wait for a Client...");
serverSocket=server.accept();
infBox.append("connected by"+serverSocket.getInetAddress().getHostName());
}
public static void main(String[] args) {
server my=new server();
my.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
my.runServer();
}
}
客户端
/*
* Created on 2005-3-18
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package netChat;
import javax.swing.*;
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
/**
* @author AppleTian
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class client extends JFrame {
private JTextField messageBox;
private JTextArea infBox;
private ObjectInputStream input;
private ObjectOutputStream output;
private String mg="";
private String chatServer;
private Socket client;
public client(String host){
super("client....");
chatServer=host;
Container c=getContentPane();
messageBox=new JTextField();
messageBox.setEnabled(false);
messageBox.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
sendData(e.getActionCommand());
}
});
c.add(messageBox,BorderLayout.NORTH);
infBox=new JTextArea();
c.add(infBox,BorderLayout.CENTER);
setSize(500,400);
setVisible(true);
}
/**
* @param actionCommand
*/
protected void sendData(String actionCommand) {
try{
mg=messageBox.getText();
output.writeObject(mg);
output.flush();
infBox.append("/nsend to server: "+mg);
}catch(IOException e){
infBox.append("/nIOException in sendData..");
}
}
public void runClient(){
try{
connectToServer();
getStreams();
processConnection();
closeConnection();
}catch(IOException e){
infBox.append(e.toString());
}
}
/**
*
*/
private void closeConnection()throws IOException {
// TODO Auto-generated method stub
infBox.append("/nclose...");
output.close();
input.close();
client.close();
}
/**
*
*/
private void processConnection() throws IOException{
// TODO Auto-generated method stub
messageBox.setEnabled(true );
do{
try{
mg=(String )input.readObject();
infBox.append("/nFrom server: "+mg);
infBox.setCaretPosition(infBox.getText().length());
}catch(ClassNotFoundException e){
infBox.append("classNotFound.../n");
}
}while(mg!="end");
}
/**
*
*/
private void getStreams() throws IOException {
// TODO Auto-generated method stub
output=new ObjectOutputStream(client.getOutputStream());
output.flush();
input=new ObjectInputStream(client.getInputStream());
infBox.append("get the IO Stream../n");
}
/**
*
*/
private void connectToServer() throws IOException {
// TODO Auto-generated method stub
infBox.append("try connecting to server.../n");
client=new Socket(InetAddress.getByName(chatServer),5000);
infBox.append("connect to server:"+client.getInetAddress().getHostName()+"/n");
}
public static void main(String[] args) {
client p;
if(args.length==0)
p=new client("127.0.0.1");
else
p=new client(args[0]);
p.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
p.runClient();
}
}
- 上一篇: Java开源工具系列(三)Struts
- 下一篇: 深入浅出Java clone技术
-= 资 源 教 程 =-
文 章 搜 索