`
lenjey
  • 浏览: 90983 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

一篇介绍 Java Socket 编程的经典文章

    博客分类:
  • J2SE
阅读更多

事实上网络编程简单的理解就是两台计算机相互通讯数据而已。对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了。Java SDK提供一些相对简单的Api来完成这些工作,Socket就是其中之一。

Webjx.Com

对于Java而言。这些Api存在与Java.net这个包里面。因此只要导入这个包就可以准备网络编程了。网络编程的基本模型就是客户机到服务器模型。简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置,并去建立两者之间的联系。然后完成数据的通讯就可以了。这里提供固定位置的通常称为服务器,而建立联系的通常叫做客户端。基于这个简单的模型,就可以进入网络编程。

Java对这个模型的支持有很多种Api.而这里我只想介绍有关Socket的编程接口。对于Java而言已经简化了Socket的编程接口。首先我们来讨论有关提供固定位置的服务方是如何建立的。Java提供了ServerSocket来对其进行支持。事实上当你创建该类的一个实力对象并提供一个端口资源你就建立了一个固定位置可以让其他计算机来访问你。

 

ServerSocket server=new ServerSocket(6789);

这里稍微要注意的是端口的分配必须是唯一的。因为端口是为了唯一标识每台计算机唯一服务的。另外端口号是从0~65535之间的,前1024个端口已经被Tcp/Ip 作为保留端口,因此你所分配的端口只能是1024个之后的。 网页教学网

好了。我们有了固定位置。现在所需要的就是一根连接线了。该连接线由客户方首先提出要求。因此Java同样提供了一个Socket对象来对其进行支持。只要客户方创建一个Socket的实例对象进行支持就可以了。


Socket client=new Socket(InetAddress.getLocalHost(),5678);

Webjx.Com


客户机必须知道有关服务器的IP地址。对于着一点Java也提供了一个相关的类InetAddress 该对象的实例必须通过它的静态方法来提供。它的静态方法主要提供了得到本机IP 和通过名字或IP直接得到InetAddress的方法。


好了,上面的方法基本可以建立一条连线让两台计算机相互交流了。可是数据是如何传输的呢?事实上I/O操作总是和网络编程息息相关的。因为底层的网络是继续数据的。除非远程调用,处理问题的核心在执行上。

否则数据的交互还是依赖于IO操作的。所以你也必须导入Java.io这个包。Java的IO操作也不复杂。它提供了针对于字节流和Unicode的读者和写者,然后也提供了一个缓冲用于数据的读写。 网页教学网

BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));

PrintWriter out=new PrintWriter(server.getOutputStream());

上面两句就是建立缓冲并把原始的字节流转变为Unicode可以操作。而原始的字节流来源于Socket的两个方法,getInputStream()和getOutputStream()方,分别用来得到输入和输出。那么现在有了基本的模型和基本的操作工具,我们可以做一个简单的Socket例程了服务方:

import Java。io。*;
import Java。net。*;
public class MyServer
{
public static void main
(String[] args) throws IOException
{
ServerSocket server=new
ServerSocket(5678);
Socket client=server.accept();
BufferedReader
in=new BufferedReader(new
InputStreamReader
(client.getInputStream()));
PrintWriter out=new
PrintWriter(client.getOutputStream());
while(true)
{
String str=in.readLine();
System.out.println(str);
out.println("has receive...");
out.flush();
if(str.equals("end"))
break;
}
client。close();
}
}  
 

这个程序的主要目的在于服务器不断接收客户机所写入的信息只到。客户机发送"End"字符串就退出程序。并且服务器也会做出"Receive"为回应。告知客户机已接收到消息。客户机代码

import Java.net.*;
import Java.io.*;
public class Client{
static Socket server;
public static void
main(String[] args)
throws Exception
{
server=new Socket
(InetAddress.getLocalHost(),5678);
BufferedReader in=new BufferedReader(new
InputStreamReader(server。getInputStream()));
PrintWriter out=new
PrintWriter(server.getOutputStream());
BufferedReader wt=new BufferedReader(new
InputStreamReader(System.in));
while(true)
{
  String str=wt.readLine();
  out.println(str);
  out.flush();
  if(str.equals("end"))
  {
  break;
  }
  System.out.println(in.readLine());
}
server.close();
}
} Webjx.Com 

 

本文来自:网页教学网(www.webjx.com)原文链接:http://www.webjx.com/exam/java/java_exam_2007_11_13_1002.html

分享到:
评论

相关推荐

    三步学会Java_Socket编程

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

    JavaTCP-Socket.zip_JAVA socket编程_java socket _socket 聊天

    本篇将深入探讨Java Socket编程及其在构建聊天应用中的应用。 首先,我们要了解TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它确保数据包按照顺序发送,并且在接收端按顺序接收,...

    Java Socket编程入门

    本篇介绍的Java Socket编程基础知识对于初学者来说非常实用。通过理解和掌握Socket通信的基本原理及其在Java中的实现方式,可以帮助开发者构建简单的网络应用程序,如聊天室等。此外,了解如何处理网络异常和管理...

    学习Java Socket编程

    Java Socket编程是网络编程的基础,它是Java API提供的一种用于实现客户端和服务器之间通信的机制。在Java中,Socket被设计为TCP/IP协议的接口,它允许应用程序通过网络发送和接收数据。这篇博客主要探讨了如何使用...

    Java+TCP/IP+Socket编程++原书第2版.pdf

    总的来说,《Java + TCP/IP + Socket编程++ 原书第2版》可能会涵盖这些主题:TCP/IP协议基础,Java Socket API的使用,异常处理,多线程编程,以及网络编程的最佳实践。这本书将帮助开发者深入理解如何在Java环境中...

    三步学会Java Socket编程

    ### 三步学会Java Socket编程 #### 一、理解Socket概念与原理 ##### 1.1 套接字(Socket)定义 - **定义**:“套接字”(Socket)是一种用于描述IP地址和端口号的数据结构,它是网络通信的基础组件之一。简单来说...

    有关Java的Socket编程入门例子

    本篇文章将深入探讨Socket编程的基础知识,包括Socket类、ServerSocket类、连接建立与数据传输等关键概念。 1. **Socket类**: - Socket是Java中的一个类,代表TCP连接的一端,通常被称为客户端。它包含了IP地址和...

    Java网络socket编程详解.doc

    本篇文章将深入探讨Java中的Socket编程,并通过具体示例介绍如何使用Socket实现基于TCP协议的服务器与客户端之间的通信。 #### 二、Socket编程概述 Socket编程基于TCP/IP协议栈,主要分为客户端Socket编程和服务端...

    简单的socket编程java篇

    本项目"简单的socket编程java篇"主要涉及了如何使用Java实现一个基本的Socket服务器(Server)和客户端(Clinet)的交互。下面将详细讲解相关的知识点。 1. **Socket概念**: Socket是网络通信中的一个端点,它...

    java Socket 编程

    Java Socket编程是网络编程的基础,它是Java API提供的一种用于实现客户端和服务器之间通信的机制。在Java中,Socket是基于TCP协议的,可以确保数据的可靠传输。本篇将深入探讨Java Socket编程的关键概念、使用场景...

    Java网络编程 Socket编程

    本篇将详细解析Java网络编程中Socket编程的关键知识点,包括TCP实现、多线程在Socket编程中的应用、UDP程序的实现以及网络编程的基本概念。 首先,我们来了解网络的基本概念。网络是由相互连接的计算机组成的系统,...

    java socket编程

    本篇文章将深入讲解Java Socket编程的基础概念、原理以及实际应用,帮助你快速掌握这一关键技能。 一、Java Socket概述 Socket在计算机网络中扮演着桥梁的角色,它允许两个网络应用程序通过TCP/IP协议进行通信。在...

    Java Socket 编程

    本篇内容将深入探讨Java Socket编程的基础概念、原理及应用实例。 首先,我们要理解Socket的基本概念。在Java中,Socket是java.net包下的类,它提供了低级别的网络通信功能。Socket分为两种类型:流式Socket...

    java 的socket编程

    本篇将深入探讨Java中的Socket编程,包括TCP和UDP两种主要的传输协议。 1. **TCP(Transmission Control Protocol)** TCP是一种面向连接的、可靠的传输协议。在Java中,`java.net.Socket`类和`java.net....

    Java使用socket网络编程详解

    在深入了解Java中的Socket编程之前,我们需要对Socket有一个基本的认识。Socket可以理解为两个进程之间进行通信的一种通道,它可以基于不同的传输协议(例如TCP、UDP等)。其中,TCP是一种面向连接的、可靠的、基于...

    java socket 编程

    ### Java Socket 编程:构建网络通信的基石 在当今高度互联的世界中,网络通信是软件开发中...通过本篇文章的学习,相信读者已经对Java Socket编程有了初步的了解和掌握,未来可以在此基础上进行更深入的研究和实践。

    Java网络编程socket

    本篇文章将深入探讨Java Socket编程的基本概念、核心类、以及实际应用中的关键点。 一、Socket基本概念 Socket,通常被称为套接字,是进程间通信的一种方式,它允许不同计算机上的进程通过网络进行通信。在网络编程...

Global site tag (gtag.js) - Google Analytics