`
吖龙Sam
  • 浏览: 20936 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java中的Socket编程(1)-入门

    博客分类:
  • Java
阅读更多

不积跬步,无以至千里!
意思是说不一小步一小步的积累,无法到达一千里的地方。同理,学习,做事,做技术也是一样,要一步一个脚印,不断积累,不畏艰难,才能最终达到目的。

今天来总结一个Socket中的一些知识点,由于Socket中涉及的内容比较多,这里分几次来阐述。这次主要做一个入门:

1、Socket是什么?
网络上两个程序是通过一个双向链路来实现数据交换的,这个双向链路中其中的一端称为一个Socket,通信两端各有一个Socket。Socket通常是用来实现客户端和服务端的连接。一个Socket由一个IP地址和一个端口号唯一确定。

2、Socket的有关知识点:
Java Socket编程中涉及的两个概念:ServerSocket 和 Socket
1)ServerSocket:是服务端套接字。在服务端中监听某个端口号,当发现客户端有Socket试图连接它时,它会通过accept方法接受请求,并在服务端建立对应的Socket与客户端进行通信。此时,通信双方各有了一个Socket,通信双方均可以往Socket读写数据。
2)Socket:是客户端套接字。客户端与指定的主机和端口号进行连接,当连接成功之后,客户端就可以往服务端读写数据。

3、开发一个Socket程序的一般步骤:
1)创建一个Socket
2)打开连接到Socket的输入或输出流
3)按照一定的协议往流中读写数据
4)关闭Socket

4、一个简单的Socket实例
需求:实现一个简单Server-Client程序。即客户端往服务端写一段数据,服务端在接收到数据之后,打印在控制台中。

1)服务端代码:

/**
 * 服务端
 * 需求:客户端写,服务端读
 * @author Sam
 *
 */
public class SimpleServer {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		try {
			// 创建一个服务端ServerSocket,监听指定端口的请求
			ServerSocket ss = new ServerSocket(9999);
			// 监听客户端请求
			Socket socket = ss.accept();
			// 与客户端建立连接之后,就可以读取客户端发过来的信息
			InputStream is = socket.getInputStream();
			
			byte[] buffer = new byte[1024];
			int len = 0;
			// 定义一个字符串构建器,用于存储客户端发过来的数据
			StringBuilder sBuilder = new StringBuilder();
			while ( (len=is.read(buffer)) != -1 ) {
				sBuilder.append(new String(buffer, 0, len));
			}
			is.close();// 关闭资源
			socket.close();
			ss.close();

			System.out.println("Server: 来自客户端的信息 : " + sBuilder.toString());
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}


这里需要注意的是:
1)端口号的取值范围是0-65535,但是由于0-1023为保留端口号,这些端口号提供一些特定的服务,所以我们这里端口号的选择最好是在1024-65535之间。
2)服务端在监听客户端请求时,accept方法是阻塞方法,即服务端在没有接收到客户端请求时,一直处于等待状态,accpet方法往下的代码不会被执行。

2)客户端代码:

/**
 * 客户端
 * @author Sam
 *
 */
public class SimpleClient {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		try {
			// 与服务端建立连接(服务端主机号,服务端监听的端口号)
			Socket socket = new Socket("192.168.123.150", 9999);
			// 与服务端建立连接之后,就可以往服务端写数据
			OutputStream out = socket.getOutputStream();
			out.write("Hello Server".getBytes());
			out.flush();// 刷新输出流缓冲区
			out.close();
			socket.close();
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}


客户端代码很简洁,与指定主机和端口号建立连接,连接成功之后,获取Socket中的输出流,往流中写一段数据,刷新数据缓冲区,最后关闭资源。

程序运行结果:
注意:先运行Server程序,再运行Client程序。结果如下:



运行结果分析:
1)运行服务端程序之后,控制台应该有一个红点,因为服务端在accept方法中处于阻塞状态,等待客户端接入;
2)当运行客户端程序之后,服务端就会监听到客户端的接入,并建立对应的Socket与客户端进行通信。

这便是一个最简单的Socket程序!客户端写,服务端读。有了这些基础之后,以后便可以一点一点的扩展。
  • 大小: 9.1 KB
分享到:
评论

相关推荐

    有关Java的Socket编程入门例子

    通过这个入门例子,初学者可以理解Java Socket编程的基本原理和操作步骤,为进一步的网络编程打下坚实的基础。实际开发中,还可以结合NIO(非阻塞I/O)或其他高级框架如Netty,提高网络通信的效率和灵活性。

    Java TCP IP Socket编程(原书第2版).

    《Java TCP/IP Socket编程(原书第2版)》基于TCP/IP Socket相关原理,对如何在Java中进行Socket编程作了深入浅出的介绍。《Java TCP/IP Socket编程(原书第2版)》内容简明扼要,条理清晰,并在讲解相应的概念或编程...

    JAVA电子教案------入门级java学习资料

    最后,Java还提供了强大的网络编程能力,包括Socket编程和HTTP客户端/服务器端开发。 综上所述,这份“JAVA电子教案(谭浩强)”将覆盖以上所有知识点,并可能深入到更多的细节,如异常的具体类型、集合框架的高级...

    Java Socket编程入门

    ### Java Socket编程入门知识点详解 #### 一、Java Socket编程基础概述 1. **平台无关性**:Java语言的一个显著特点就是平台无关性,这意味着编写的Java程序可以在任何支持Java虚拟机(JVM)的平台上运行。这对于...

    Java的教程课件--入门必备

    11. **网络编程**:Java的Socket编程允许开发网络应用程序,如客户端/服务器模型,用于数据交换。 12. **Java Applet与Servlet**:Java Applet是嵌入在网页中的小程序,而Servlet用于处理Web服务器端的请求。 13. ...

    Java网络编程从入门到精通

    1. **Socket编程**:Java的Socket类是进行网络通信的基础,它提供了客户端和服务端之间的连接。通过创建ServerSocket来监听客户端的连接请求,然后使用Socket类建立与客户端的连接,进行数据传输。 2. **URL和...

    Java Socket网络编程初级入门

    Java Socket网络编程是Java开发中实现网络通信的基础,它提供了客户端和服务器端进行数据交换的接口。在Java SDK中,`java.net`包包含了Socket相关的API,使得开发者能够轻松地进行网络编程。 首先,要理解网络编程...

    Java Socket传输图片源代码

    在Java编程语言中,Socket是实现网络通信的基础组件。...同时,这个例子也适合初学者作为入门教程,通过实际操作加深对Socket编程的理解。在实际开发中,可以结合其他技术,如多线程、NIO等,提升程序性能和稳定性。

    Java Socket 套接字编程经典入门

    Java Socket编程经典的入门教程(包含源代码) Socket即套接字 java.net包的客户端Socket,服务端ServerSocket; 单线程套接字客户端和服务端的处理; 服务端多线程处理客户端套接字; 带有线程池处理客户端套接字;...

    java从入门到精通--实例

    8. **网络编程**:Java的Socket编程允许创建客户端和服务器应用程序,实现网络通信。理解TCP和UDP协议,以及套接字的使用,能让你构建网络应用。 9. **数据库操作**:JDBC(Java Database Connectivity)是连接Java...

    socket编程经验介绍

    在C++或JAVA等编程语言中进行Socket编程,通常需要包含特定的头文件,如在Windows环境下,可能需要`winsock2.h`和`ws2tcpip.h`,并链接相应的库文件,如`ws2_32.lib`。编程基础至少需要了解TCP和UDP的基本原理,以及...

    linux 编程教程 -- linux下编程入门

    Linux编程教程——Linux下编程入门 在Linux操作系统中进行编程是一项重要的技能,尤其对于系统级开发者和软件工程师来说。Linux提供了丰富的开发环境和工具,支持多种编程语言,如C、C++、Python、Java等。本教程将...

    socket 编程 网络编程资料大全 给力

    网络通信协议,网络通信基础知识,socket网络编程的一些基础知识,Socket网络编程学习笔记,网络编程总结,2011-学习资料大全:java_socket编程,学习网络编程的十个步骤,socket编程入门(经典版),Unix_网络编程...

    java通信socket入门实例

    Java Socket通信是网络编程中的基础概念,主要用于实现客户端与服务器之间的双向通信。在这个"java通信socket入门实例"中,我们将探讨...通过实践,能够更好地掌握Java Socket编程,为后续的网络编程打下坚实的基础。

    Java编程入门.pdf

    ### Java编程入门:核心概念与实践 #### 一、引言 Java作为一种广泛使用的编程语言,自1995年Sun Microsystems公司推出以来,迅速在软件开发领域占据了一席之地。其跨平台特性(一次编写,到处运行)使得Java成为...

    java网络编程从入门到精通

    Java网络编程是开发分布式应用...通过阅读"Java网络编程从入门到精通"这本书,你将系统地学习到以上所有内容,并通过实例和练习加深理解,从而在实际项目中灵活运用这些知识,成为一名精通Java网络编程的专业开发者。

    java socket入门经典代码

    本教程将通过几个简单但经典的入门示例,帮助初学者理解Socket编程的基本概念和使用方法。 首先,我们需要了解Socket的两个主要组成部分:ServerSocket和Socket。ServerSocket在服务器端创建,用于监听客户端的连接...

    socket入门Demo

    Socket编程是计算机网络通信中的重要概念,主要用于实现进程间的通信,尤其在分布式系统和互联网应用中扮演着核心角色。这个“socket入门Demo”应该包含了基本的Socket编程实例,旨在帮助初学者理解和掌握Socket通信...

    Socket编程 目录连接.doc

    #### 一、Java Socket 网络编程入门与基础概念 **1.1 Java Socket 网络编程简介** Java Socket 编程是Java平台提供的一种网络通信方式,主要涉及到Java标准库中的`java.net`包。该包包含了用于创建客户端与服务器...

Global site tag (gtag.js) - Google Analytics