`
黄兆廷
  • 浏览: 8591 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

三步学会Java Socket编程--2

阅读更多
三步学会Java Socket编程--2

{建立客户端}

import java.io.*;
import java.net.*;

public class Client
{
Socket socket;
BufferedReader in;
PrintWriter out;

public Client()
{
try
{
socket = new Socket("xxx.xxx.xxx.xxx", 10000);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(),true);
BufferedReader line = new BufferedReader(new InputStreamReader(System.in));

out.println(line.readLine());
line.close();
out.close();
in.close();
socket.close();
}
catch (IOException e)
{}
}

public static void main(String[] args)
{
new Client();
}
}


   这个客户端连接到地址为xxx.xxx.xxx.xxx的服务器,端口为10000,并从键盘输入一行信息,发送到服务器,然后接受服务器的返回信息,最后结束会话。

第二步 多个客户同时连接

   在实际的网络环境里,同一时间只对一个用户服务是不可行的。一个优秀的网络服务程序除了能处理用户的输入信息,还必须能够同时响应多个客户端的连接请求。在java中,实现以上功能特点是非常容易的。

   设计原理:

   主程序监听一端口,等待客户接入;同时构造一个线程类,准备接管会话。当一个Socket会话产生后,将这个会话交给线程处理,然后主程序继续监听。运用Thread类或Runnable接口来实现是不错的办法。

   {实现消息共享}


import java.io.*;
import java.net.*;

public class Server extends ServerSocket
{
private static final int SERVER_PORT = 10000;

public Server() throws IOException
{
super(SERVER_PORT);

try
{
while (true)
{
Socket socket = accept();
new CreateServerThread(socket);
}
}
catch (IOException e)
{}
finally
{
close();
}
}
//--- CreateServerThread
class CreateServerThread extends Thread
{
private Socket client;
private BufferedReader in;
private PrintWriter out;

public CreateServerThread(Socket s) throws IOException
{
client = s;

in = new BufferedReader(new InputStreamReader(client.getInputStream(), "GB2312"));
out = new PrintWriter(client.getOutputStream(), true);
out.println("--- Welcome ---");
start();
}

public void run()
{
try
{
String line = in.readLine();

while (!line.equals("bye"))
{
String msg = createMessage(line);
out.println(msg);
line = in.readLine();
}
out.println("--- See you, bye! ---");
client.close();
}
catch (IOException e)
{}
}

private String createMessage(String line)
{
xxxxxxxxx;
}
}

public static void main(String[] args) throws IOException
{
new Server();
}
}

   这个程序监听10000端口,并将接入交给CreateServerThread线程运行。CreateServerThread线程接受输入,并将输入回应客户,直到客户输入"bye",线程结束。我们可以在createMessage方法中,对输入进行处理,并产生结果,然后把结果返回给客户。 第三步 实现信息共享:在Socket上的实时交流

   网络的伟大之一也是信息共享,Server可以主动向所有Client广播消息,同时Client也可以向其它Client发布消息。下面看看如何开发一个可以实时传递消息的程序。

分享到:
评论

相关推荐

    三步学会Java_Socket编程

    本篇文章将深入讲解如何通过三步学习Java Socket编程。 **第一步:理解Socket** Socket,又称为“套接字”,是网络通信中的一个抽象概念,它封装了IP地址和端口号,是网络通信链路的句柄。在Java中,Socket和...

    三步学会Java Socket编程

    本文将详细介绍如何分三步学习Java Socket编程,并提供一个简单的Server-Client模型的程序示例。 第一步:理解Socket基础 Socket在Java中是通过`java.net.Socket`和`java.net.ServerSocket`类来实现的。Socket提供...

    三步学会Java Socket编程.doc

    本教程分为三步,旨在帮助初学者快速掌握Java中的Socket编程。 第一步是理解Socket的基本概念。Socket在计算机网络中通常被称为“套接字”,它定义了IP地址和端口号,是通信链路的句柄。Java中的Socket和...

    三步学会Java Socket编程.

    ### 三步学会Java Socket编程 #### 一、理解TCP/IP与UDP协议 - **TCP/IP**:传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol),是一种面向连接的、可靠的、基于字节流的传输层通信协议...

    JAVA网络编程

    使用JAVA编写网络通信程序 .doc Java网络编程 MulticastSocket类的使用 .doc Java网络编程---IO部分学习笔记整理 .doc Java网络编程基础 Datagram类使用方法 (1) .doc ...Java基础 三步学会Java Socket编程(三).doc

    Java基础_三步学会Java_Socket编程(一)

    ### Java基础之三步学会Java Socket编程详解 #### 一、深入理解Socket概念与机制 ##### 1.1 什么是Socket? **Socket**,通常被称为“套接字”,是一种用于在网络间进行通信的方式,它主要负责描述IP地址和端口号...

    华科-计算机网络实验报告-Java_Socket编程-网络组建实验.docx

    ### 华科-计算机网络实验报告-Java_Socket编程-网络组建实验 #### 实验概述 本实验旨在通过具体的编程实践加深学生对于计算机网络中应用层和传输层的理解,特别是Socket编程的应用及其在网络通信中的作用。实验以...

    Java socket编程实例.pdf

    通过上述实例,我们不仅了解了Java Socket编程的基本原理,还学会了如何编写服务端和客户端代码。在实际项目中,还可以结合多线程技术进一步优化性能,使服务端能够同时处理多个客户端的请求。此外,对于安全性和...

    Java基础_三步学会Java_Socket编程(二)

    本文将基于给定的示例代码,深入探讨如何在Java中利用Socket编程实现服务器对多个客户端的同时连接和数据处理。 #### 设计原理与实现 ### 1. 服务器端的设计原理 服务器端的主要职责是监听指定端口上的连接请求,...

    java网络编程 socket

    通过阅读《Java网络编程文档教材》和《Java基础三步学会JavaSocket编程》,你可以更深入地了解Java Socket编程的细节和实践技巧。理论结合实践,才能真正掌握这一技术。在实际开发中,不断优化和调试,才能编写出...

    21天学会Java游戏--在短的时间内教会你编写java游戏

    《21天学会Java游戏——快速掌握Java游戏编程精要》 Java作为一种广泛使用的编程语言,不仅在企业级应用开发中占据重要地位,还在游戏开发领域有着广泛应用。本教程的目标是在21天内,通过系统的学习和实践,帮助你...

Global site tag (gtag.js) - Google Analytics