java中的TCP SERVER代码

摘要:
\n“);jButton1.setEnabled(true);}receiverr=newreceiver();Threadt=newThread(r);t.start();}catch(Exceptione){textArea1.append(e.toString()+“\n”);}}privateclassreceiverimplementsRunnable{publicvoidrun(){Strings1=null;try{s1=in.readLine();while(s1!=“clientexit!

package tcpserver;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;
import java.net.*;
import java.io.*;
/**
 * <p>Title: TCPServer</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2006</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class Frame1 extends JFrame implements Runnable
{
  ServerSocket server=null;
    Socket socket=null;
    BufferedReader in=null;
    PrintWriter out=null;
    InetAddress myServer=null;
  JPanel contentPane;
  XYLayout xYLayout1 = new XYLayout();
  TextArea textArea1 = new TextArea();
  TextField textField1 = new TextField();
  Label label1 = new Label();
  JButton jButton1 = new JButton();
  JButton jButton2 = new JButton();

  //Construct the frame
  public Frame1() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  //Component initialization
  private void jbInit() throws Exception  {
    Thread thread=new Thread(this);
    thread.start();
    contentPane = (JPanel) this.getContentPane();
    contentPane.setLayout(xYLayout1);
    this.setSize(new Dimension(400, 300));
    this.setTitle("服务器端");
    label1.setText("消息:");
    textArea1.setText("");
    jButton1.setActionCommand("");
    jButton1.setText("发送消息");
    jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));
    jButton2.setText("退出");
    jButton2.addActionListener(new Frame1_jButton2_actionAdapter(this));
    textField1.addKeyListener(new Frame1_textField1_keyAdapter(this));
    textField1.addActionListener(new Frame1_textField1_actionAdapter(this));
    contentPane.add(textField1,  new XYConstraints(78, 222, 274, 32));
    contentPane.add(textArea1,   new XYConstraints(3, 1, 395, 214));
    contentPane.add(label1,        new XYConstraints(37, 227, 75, 23));
    contentPane.add(jButton2,   new XYConstraints(290, 260, -1, -1));
    contentPane.add(jButton1, new XYConstraints(38, 259, -1, -1));
  }
  //Overridden so we can exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }
public void run()
  {
    try{
      server=new ServerSocket(5438);
      socket=server.accept();
      in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
      out=new PrintWriter(socket.getOutputStream());
      if(socket!=null)
      {
        textArea1.append("system information:client have joined!\n");
        jButton1.setEnabled(true);
      }
      receiver r=new receiver();
      Thread t=new  Thread(r);
      t.start();
       }
       catch(Exception e)
       {
         textArea1.append(e.toString()+"\n");
       }
  }
private class receiver implements Runnable
  {
    public void run()
    {
      String s1=null;
      try
      {
        s1=in.readLine();
        while(s1!="client exit!")
        {
          textArea1.append("client information:"+s1+"\n");
          s1=in.readLine();
        }
        in.close();
        out.close();
        socket.close();
        server.close();
      }
      catch(Exception e)
      {
        jButton1.setEnabled(false);
      }
    }
  }
  void jButton1_actionPerformed(ActionEvent e) {
        try {
          out.println(textField1.getText());
          out.flush();
          textArea1.append("server information:" + textField1.getText() + "\n");
          textField1.setText("");
        }
        catch (Exception ex) {
        }
      }

  void jButton2_actionPerformed(ActionEvent e) {
 try{
      out.print("server exit!");
      out.flush();
    }
    catch(Exception e2)
    {

    }
    finally{
      System.exit(0);
           }
  }

  void textField1_keyPressed(KeyEvent e) {
int j=e.getKeyCode();
    if(j==e.VK_ENTER)
    {
      out.println(textField1.getText());
      out.flush();
      textArea1.append("server information:"+textField1.getText()+"\n");
      textField1.setText("");
    }
  }

  void textField1_actionPerformed(ActionEvent e) {
    try {
      out.println(textField1.getText());
      out.flush();
      textArea1.append("server information:" + textField1.getText() + "\n");
      textField1.setText("");
    }
    catch (Exception ex) {
    }

  }
  }

class Frame1_jButton1_actionAdapter implements java.awt.event.ActionListener {
  Frame1 adaptee;

  Frame1_jButton1_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jButton1_actionPerformed(e);
  }
}

class Frame1_jButton2_actionAdapter implements java.awt.event.ActionListener {
  Frame1 adaptee;

  Frame1_jButton2_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jButton2_actionPerformed(e);
  }
}

class Frame1_textField1_keyAdapter extends java.awt.event.KeyAdapter {
  Frame1 adaptee;

  Frame1_textField1_keyAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void keyPressed(KeyEvent e) {
    adaptee.textField1_keyPressed(e);
  }
}

class Frame1_textField1_actionAdapter implements java.awt.event.ActionListener {
  Frame1 adaptee;

  Frame1_textField1_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.textField1_actionPerformed(e);
  }
}

免责声明:文章转载自《java中的TCP SERVER代码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux GTK编程示例Mysql的union下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Django(一):从socket到MVC

一、socket的http套路 web应用本质上是一个socket服务端,用户的浏览器是一个socket客户端。socket处在应用层与传输层之间,是操作系统中I/O系统的延伸部分(接口),负责系统进程和应用之间的通信。 HTTP协议又称超文本传输协议。 1 //浏览器发送一个HTTP请求; 2 //服务器收到请求,根据请求信息,进行函数处理,生成一个H...

浅谈Python-IO多路复用(select、poll、epoll模式)

1. 什么是IO多路复用   在传统socket通信中,存在两种基本的模式,   第一种是同步阻塞IO,其线程在遇到IO操作时会被挂起,直到数据从内核空间复制到用户空间才会停止,因为对CPython来说,很多socket相关函数均是与内核函数(系统调用)密切相关的,比如fctl与ioctl,那么采用这种模式就会存在CPU资源利用率变低,具体的模式图如下:...

SuperSocket源码解析之会话生命周期

一 基本概念    会话(Session)是客户端与服务器进行通信的基本单元,也是一个Socket的封装,在http协议中也有Session机制,其主要作用封装一个通信单元socket,负责服务器与客户端消息发送与接收,会话之间相互独立互不干扰且拥有唯一SessionId标识,维护着客户与服务器通信的生命周期。 二 SocketSession Socket...

linux网络编程--UNIX域套接字

UNIX域套接字   socket同样可以用于本地通信   创建套接字时使用本地协议PF_UNIX(或PF_LOCAL)PF_LOCAL   分为流式套接字和用户数据报套接字   和其他进程间通信方式相比使用方便。效率更高   用于前后台进程通信 本地地址结构:  struct sockaddr_un {   sa_family_t sun_family;...

javascript基础-ajax

先看几种B/S交互的对比 B/S方式 阻塞页面 历史记录 协议 URL: get —— 自动记录 浏览器前进后退可访问 http/https form: get/post 完全阻塞 自动记录 浏览器前进后退可访问 http/https ajax: get/post 同步阻塞 异步不阻塞 HTML5才支持无刷新改变页面URL h...

raw_socket(原始套接字)以及普通socket使用终极总结

  一、传输层socket(四层socket,普通socket) 可参考本人以下博客: Windows Socket编程之UDP实现大文件的传输:http://blog.csdn.net/luchengtao11/article/details/71016222 Windows Socket编程之TCP实现大文件的传输:http://blog.csd...