`
jiaguwen123
  • 浏览: 415344 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

socket编程范例

阅读更多

项目大量用到了网络通信内容,自己学习了一下.写了一个java Socket实例.还写了比较详细的注释.以方便以后的阅读.代码实现的功能是服务器段打开之后监听一个端口,当有客户端访问该服务器端时,就建立客户端与服务器端的联系.支持多个客户端与服务器进行连接.然后客户端输入信息.服务器可以针对客户端进行回复.

文件一: SocketServer.java        ---->        Socket服务器端

package com.huameng.socket.next;

import java.net.ServerSocket;

/**
 * 服务器端Socket
 *
 * @author Administrator
 *
 */
public class SocketServer {

 /**
  * 服务器端Socket构造方法
  */
 public SocketServer() {
  try {

   int clientcount = 0; // 统计客户端总数

   boolean listening = true; // 是否对客户端进行监听

   ServerSocket server = null; // 服务器端Socket对象

   try {
    // 创建一个ServerSocket在端口2121监听客户请求
    server = new ServerSocket(2121);

    System.out.println("Server starts...");
   } catch (Exception e) {
    System.out.println("Can not listen to. " + e);
   }

   while (listening) {
    // 客户端计数
    clientcount++;

    // 监听到客户请求,根据得到的Socket对象和客户计数创建服务线程,并启动之
    new ServerThread(server.accept(), clientcount).start();
   }
  } catch (Exception e) {
   System.out.println("Error. " + e);
  }
 }

 /**
  * 主方法
  *
  * @param args
  */
 public static void main(String[] args) {
  new SocketServer();
 }
}

 

文件二: ServerThread.java       ---->        服务器监控器

package com.huameng.socket.next;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class ServerThread extends Thread {

 private static int number = 0; // 保存本进程的客户计数

 Socket socket = null; // 保存与本线程相关的Socket对象

 public ServerThread(Socket socket, int clientnum) {

  this.socket = socket;
  number = clientnum;
  System.out.println("当前在线的用户数: " + number);
 }

 public void run() {
  try {

   // 由Socket对象得到输入流,并构造相应的BufferedReader对象
   BufferedReader in = new BufferedReader(new InputStreamReader(socket
     .getInputStream()));

   // 由Socket对象得到输出流,并构造PrintWriter对象
   PrintWriter out = new PrintWriter(socket.getOutputStream());

   // 由系统标准输入设备构造BufferedReader对象
   BufferedReader sysin = new BufferedReader(new InputStreamReader(
     System.in));

   // 在标准输出上打印从客户端读入的字符串
   System.out.println("[Client " + number + "]: " + in.readLine());

   String line; // 保存一行内容

   // 从标准输入读入一字符串
   line = sysin.readLine();

   while (!line.equals("bye")) { // 如果该字符串为 "bye",则停止循环

    // 向客户端输出该字符串
    out.println(line);

    // 刷新输出流,使Client马上收到该字符串
    out.flush();

    // 在系统标准输出上打印读入的字符串
    System.out.println("[Server]: " + line);

    // 从Client读入一字符串,并打印到标准输出上
    System.out.println("[Client " + number + "]: " + in.readLine());

    // 从系统标准输入读入一字符串
    line = sysin.readLine();
   }

   out.close(); // 关闭Socket输出流
   in.close(); // 关闭Socket输入流
   socket.close(); // 关闭Socket
  } catch (Exception e) {
   System.out.println("Error. " + e);
  }
 }

}

 

文件三: ScoketClient.java        ---->        Scoket客户端

package com.huameng.socket.next;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

/**
 * 客户端Socket
 *
 * @author Administrator
 *
 */
public class SocketClient {

 /**
  * 客户端Socket构造方法
  */
 public SocketClient() {
  try {

   // 向本机的2121端口发出客户请求
   Socket socket = new Socket("localhost", 2121);

   System.out.println("Established a connection...");

   // 由系统标准输入设备构造BufferedReader对象
   BufferedReader sysin = new BufferedReader(new InputStreamReader(
     System.in));

   // 由Socket对象得到输出流,并构造PrintWriter对象
   PrintWriter out = new PrintWriter(socket.getOutputStream());

   // 由Socket对象得到输入流,并构造相应的BufferedReader对象
   BufferedReader in = new BufferedReader(new InputStreamReader(socket
     .getInputStream()));

   String line; // 保存一行内容

   // 从系统标准输入读入一字符串
   line = sysin.readLine();

   while (!line.equals("bye")) { // 若从标准输入读入的字符串为 "bye"则停止循环

    // 将从系统标准输入读入的字符串输出到Server
    out.println(line);

    // 刷新输出流,使Server马上收到该字符串
    out.flush();

    // 在系统标准输出上打印读入的字符串
    System.out.println("[Client]: " + line);

    // 从Server读入一字符串,并打印到标准输出上
    System.out.println("[Server]: " + in.readLine());

    // 从系统标准输入读入一字符串
    line = sysin.readLine();

   }

   out.close(); // 关闭Socket输出流
   in.close(); // 关闭Socket输入流
   socket.close(); // 关闭Socket
  } catch (Exception e) {
   System.out.println("Error. " + e);
  }
 }

 /**
  * 主方法
  *
  * @param args
  */
 public static void main(String[] args) {
  new SocketClient();
 }

}

分享到:
评论

相关推荐

    西安电子科技大学-通信网络实验报告(二)Socket编程范例.docx

    ### 标题解析:西安电子科技大学-通信网络实验报告(二)Socket编程范例 此标题表明了该实验报告为系列实验中的第二部分,主要聚焦于Socket编程的应用实例。在通信领域,尤其是网络编程中,Socket是一种非常重要的...

    标准c语言_socket编程_范例

    本篇将详细讲解标题为“标准c语言_socket编程_范例”的知识点,以及描述中提到的server端和client端的实现。 1. **Socket基本概念**: Socket是操作系统提供的一种进程间通信(IPC)机制,尤其适用于网络通信。在...

    经典 VB.net 里面的socket通讯范例

    在VB.NET编程环境中,Socket通信是一种基础且强大的网络通信方式,尤其在TCP/IP协议栈上。本示例将深入探讨如何使用VB.NET实现基于TCP/IP的Socket通信,这对于开发网络应用,如聊天室、文件传输等是至关重要的。 ...

    socket编程—实现文件传输、线程、进程范例

    socket编程的简单例子,属于socket编程入门级(本人正在学习中),感兴趣的朋友可以下载看看。 程序在ubuntu9.04下编译的,因为类库的不同,windows下VC编程调试通不过。

    VC MFC Socket编程.rar

    VC MFC Socket编程,这里面不至一个例子,最后做出了一个简单的MFC Socket 聊天室例子,来进一步演示MFC Socket编程的技术细节,对于VC 初学者是非常不错的参考范例。  CDialog::OnInitDialog();  CSocket sock...

    Windows Socket 编程资料

    Berkeley大学BSD UNIX中流行的Socket接口为范例定义了一套Micosoft Windows下网络编程接口。它不仅包含了人们所熟悉的Berkeley Socket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用...

    Socket范例详细介绍

    Socket编程是计算机网络通信中的重要概念,主要用于实现进程间的网络通信。在本篇文章中,我们将深入探讨Socket范例,特别是通过源代码的方式来理解其工作原理和应用。 首先,Socket是网络编程的基础,它提供了一种...

    Win CE与Windows XP Socket通讯范例

    本话题将深入探讨“Win CE与Windows XP Socket通讯范例”,这涉及到Windows CE(一种嵌入式操作系统)与Windows XP(个人计算机上的操作系统)之间的网络通信,通过Socket编程实现数据交换。以下是关于这个主题的...

    c#经典编程范例50讲

    在"C#经典编程范例50讲"中,您将深入探索C#这门强大而灵活的编程语言,掌握各种核心概念和高级技巧。C#是Microsoft开发的一种面向对象的编程语言,广泛应用于Windows应用程序、游戏开发、Web应用以及移动应用等领域...

    vc.rar_VC socket_VC Socket_socket vc_socket编程_vc client

    socket编程示例;有server 和 client两种模式;包含全部源码,是vc++ socket编程的范例

    JAVA编程通用范例

    Java编程通用范例是开发者们在进行Java编程时经常会参考的一种资源,它包含了各种常见问题的解决方案和最佳实践。这份资料旨在提供一个可嵌套到实际项目中的代码库,帮助开发者快速解决遇到的问题,提高开发效率。...

    Socket编程.xlsx

    此文档是本人参考网上资料,对Socket编程的总结文档,包含一些代码范例,总体分为:Windows下Socket编程、Linux下Socket编程、socket缓冲区&阻塞模式、基于TCP/UDP协议的Scoket编程,非常有助于初学者更好的理解...

    C语言 实现 Socket 范例,包括event-driven

    在IT领域,Socket编程是网络通信的核心技术之一,特别是在C语言环境下,它的应用广泛且深入。本篇将详细解析标题和描述中...通过实践这些范例,开发者可以更好地掌握Socket编程,并为更复杂的网络应用打下坚实基础。

    windows socket编程源码

    本资源“windows socket编程源码”提供了一个初学者学习Winsock编程的范例,对于想要深入理解网络编程的人来说,这是一个很好的起点。 首先,让我们了解一下Winsock的基本概念: 1. **Winsock初始化**:在使用...

    c++ 网络编程范例

    《C++网络编程范例——基于VC++ SOCKET TCP/IP通讯》 在计算机科学领域,网络编程是连接不同设备,实现数据传输的关键技术。C++作为一门强大的编程语言,结合Windows平台上的VC++环境,可以构建高效且可靠的网络...

    EVC tcpip 编程范例

    本篇文章将深入探讨“EVC tcpip 编程范例”,并基于EVC 4.0的环境,详细解析如何进行TCP/IP编程。 首先,TCP/IP协议栈是互联网的基础,它由多个层次的协议组成,包括应用层、传输层、网络层和数据链路层。TCP...

    socket编程示例--聊天软件服务器端+客户端

    Socket编程是计算机网络通信中的重要技术,主要用于实现进程间的网络通信。在这个示例中,我们有两个文件:`socketTCPclient.cpp` 和 `socketTCPserver.cpp`,分别代表聊天软件的客户端和服务端。以下是对这两个文件...

    pb socket范例

    PB Socket范例主要涉及到的是Protocol Buffers(简称PB)与Socket编程的结合应用。Protocol Buffers是Google开发的一种数据序列化协议,它提供了一种高效、灵活且平台无关的方式来序列化结构化数据,常用于网络通信...

    Shell编程范例之文件操作-TinyLab原创

    本文将通过各种具体的编程范例,帮助读者深入理解Linux文件操作的各个方面,并通过实践加深对Shell编程范例的理解。通过本章内容的学习,读者能够更好地使用Shell进行文件操作,编写出高效、稳定的脚本来自动化管理...

Global site tag (gtag.js) - Google Analytics