ServerSocket:Socket & ServerSocket

原创 2007年09月18日 09:43:00
package comm;
/**
 * @docRoot:socket客户端程序
 * @author:jingshaoping
 * @date:2007-9-17
 */
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class Server_Socket extends JFrame {
 private static final long serialVersionUID = 1L;
 
 /**窗体中间部分的面板*/
 private JPanel pan_center;
 /**窗体下面部分的面板*/
 private JPanel pan_south;
 /**聊天消息部分的滚动面板*/
 private JScrollPane jsp_chat_scroll_contents;
 /**聊天内容显示*/
 private JTextArea  text_area_chat_contents;
 /**要发送的信息*/
 private JTextField text_message;
 /**要发送按钮*/
 private JButton send;
 /**发送的数据**/
 private DataOutputStream out;
 /**传入的数据**/
 private DataInputStream in;
 /**Socket**/
 private Socket socket;
 /**serversocket**/
 private ServerSocket serversocket;
 /**构造方法**/
 public Server_Socket()
 {
  try
  {
   jinint();
  }catch(Exception e)
  {
   JOptionPane.showMessageDialog(this,"程序初始化没有完成");
  }
 }
 /**
  * @docRoot 对程序进行初始化
  */
 private void jinint()
 {
  /**添加聊天内容**/
  text_area_chat_contents = new JTextArea(12,55);
  text_area_chat_contents.setEditable(false);
  text_area_chat_contents.setFont(new Font("黑体",0,14));
  jsp_chat_scroll_contents = new JScrollPane(text_area_chat_contents);
  pan_center = new JPanel();
  pan_center.add(jsp_chat_scroll_contents);
  this.getContentPane().add(pan_center,BorderLayout.CENTER);
  /**添加message和发送按钮**/
  text_message = new JTextField(30);
  text_message.setFont(new Font("黑体",1,16));
  send = new JButton("发送");
  pan_south = new JPanel();
  pan_south.add(text_message);
  pan_south.add(send);
  this.getContentPane().add(pan_south,BorderLayout.SOUTH);
  /**窗体的总体布局与外观*/
  this.setTitle("聊天程序");
  this.setResizable(false);
  this.setSize(400,300); 
  Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
  this.setLocation((screen.width-400)/2,(screen.height-300)/2);
  /**对等待连接的端口进行初始化**/
  try
  {
   serversocket = new ServerSocket(3000);
   JOptionPane.showMessageDialog(this,"连接成功");
  }catch(Exception e)
  {
   JOptionPane.showMessageDialog(this,"连接失败");
  }
  /**建立连接**/
  try
  {
   socket = serversocket.accept();
   out = new DataOutputStream(socket.getOutputStream());
   in = new DataInputStream(socket.getInputStream());
   out.writeUTF("客户机连接成功");
   MyThread mythread = new MyThread(this);
   mythread.start();
  }catch(Exception e){
  }
  /**对程序的关闭添加监听*/
  this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  this.addWindowListener(new WindowListener(){
   public void windowOpened(WindowEvent arg0) {}
   public void windowClosing(WindowEvent arg0) {}
   public void windowClosed(WindowEvent arg0) {
    try
    {
     out.writeUTF("bye");
     appendMessage("bye"); 
    }catch(Exception e)
    {
    }
    appClose();  
   }
   public void windowIconified(WindowEvent arg0) {}
   public void windowDeiconified(WindowEvent arg0) {}
   public void windowActivated(WindowEvent arg0) {}
   public void windowDeactivated(WindowEvent arg0) {}
  });
  this.setVisible(true);
  /**添加send控件的监听**/
  send.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent arg0) {
    sendMessage();
   }
  }
  );
 }
 /**发送消息**/
 private void sendMessage()
 {
  if(!text_message.getText().equalsIgnoreCase(""))
  {
   try
   {
    out.writeUTF(text_message.getText());
    appendMessage("服务器:"+text_message.getText()+"/n");
    text_message.setText("");
    text_message.setFocusable(true);
   }catch(Exception e)
   {
    JOptionPane.showMessageDialog(this,"消息发送失败,可能是没有建立连接");
   }
  }
 }
 /**关闭应用程序**/
 private void appClose()
 {
  dispose();
  System.exit(0);
 }
 /**main testProgram**/
 public static void main(String[] args)
 {
  new Server_Socket();
 }
 /**传出in**/
 public DataInputStream getIn() {
  return in;
 }
 /**更新text_area_chat_contents里的内容**/
 public void appendMessage(String str)
 {
  text_area_chat_contents.append(str);
 }
 /**传出out**/
 public DataOutputStream getOut() {
  return out;
 }
 /**获取socket**/
 public Socket getSocket() {
  return socket;
 }
}
 

Socket DatagramSocket ServerSocke

两类传输协议:Tcp;UDp  TCP 是Tranfer Control protocol 的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接...
  • abc3224302
  • abc3224302
  • 2016年06月16日 23:42
  • 620

Java Socket 编程之Socket与ServerSocket的区别

1.1 ServerSocket类    创建一个ServerSocket类,同时在运行该语句的计算机的指定端口处建立一个监听服务,如:     ServerSocket MyListener=n...
  • u012635819
  • u012635819
  • 2015年09月11日 14:06
  • 1894

java ServerSocket 用法详解(一)

本篇文章观点和例子来自 《Java网络编程精解》, 作者为孙卫琴, 出版社为电子工业出版社。       在客户/服务器通信模式中, 服务器端需要创建监听端口的 ServerSocket...
  • qilixiang012
  • qilixiang012
  • 2015年03月07日 21:49
  • 1715

Java网络编程精解学习笔记(第三章 serverSocket详解)

1.构造ServerSocket ServerSocket的构造方法有以下几种重载方法: ServerSocket() ServerSocket(int port) ServerSocket(...
  • cg3410
  • cg3410
  • 2017年01月06日 20:07
  • 256

ServerSocket用法详解

在客户/服务器通信模式中,服务器端需要创建监听特定端口的ServerSocket,ServerSocket负责接收客户连接请求。本章首先介绍ServerSocket类的各个构造方法,以及成员方法的用法...
  • Tian779278804
  • Tian779278804
  • 2016年03月18日 12:55
  • 21382

Java中ServerSocket与Socket的区别

1.ServerSocket类 创建一个ServerSocket类,同时在运行该语句的计算机的指定端口处建立一个监听服务,如: ServerSocket MyListener=new Server...
  • wwwjiahuan
  • wwwjiahuan
  • 2017年03月08日 20:29
  • 749

Java ServerSocket用法深入分析

本篇文章观点和例子来自 《Java网络编程精解》, 作者为孙卫琴, 出版社为电子工业出版社       在客户/服务器通信模式中, 服务器端需要创建监听端口的 ServerSocket, Serv...
  • wangbaochu
  • wangbaochu
  • 2015年04月15日 17:24
  • 2829

android Sockte、ServerSocket阻塞,不同步问题

从昨天搞到了现在,一直有问题,开始以为是线程通信问题,测试后发现不是,走了好多弯路。用两个真机模拟的,有时候没有LogCat,也不知道原因。 有一次发现提示read(),readline(),查了一...
  • wshngyf
  • wshngyf
  • 2016年03月02日 23:08
  • 1304

BCB ServerSocket多线程示例

TServerSocket的OnGetThread处理应该创建一个新的线程。然后把ClientSocket 传给 SocketThread  *&SocketThread的线程类指针的 应该是从TSe...
  • u014438664
  • u014438664
  • 2015年03月29日 23:26
  • 711

JAVA ServerSocket 简单web服务器

import java.io.*; import java.net.*; class myThread implements Runnable { private Socket s; publi...
  • CNHK1225
  • CNHK1225
  • 2016年02月21日 13:08
  • 1058
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ServerSocket:Socket & ServerSocket
举报原因:
原因补充:

(最多只允许输入30个字)