`

java通信之Socket通信基础

    博客分类:
  • Java
阅读更多

正处于网络环境下的两个程序,它们之间通过一个交互的连接来实现数据通信。每一个连接的通信端叫做一个Socket。一个完整的Socket通信程序应该包含以下几个步骤:

①创建Socket;

②打开连接到Socket的输入输出流;

④按照一定的协议对Socket进行读写操作;

④关闭Socket。

 

Socket通信分两部分:服务器端和客户端。服务器端必须优先启动,然后等待socket连接,如果达成连接则开始执行输入输出操作,通过输入流获取客户端的请求信息,通过输出流返回客户端信息。客户端则只需创建一个Socket指定服务器的ip和端口号即可。

 

下面看服务器代码:

public class SocketServer {
	public static int port = 3333;
	public static String ip = "172.30.1.101";
	
	public static void main(String[] args) throws IOException {
		//①启动服务器
		ServerSocket server = new ServerSocket(port);
		System.out.println("server running...");
		//②监听Socket
		Socket socket = server.accept();
		//③IO流
		BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
		
		String client = null;
		//如果接收到客户端的exit信号则关闭Socket
		while(!"exit".equalsIgnoreCase(client = br.readLine())){
			System.out.println("from client say:"+client);
			pw.println("server get your info :" +client);
			pw.flush();
		}
				
		br.close();
		pw.close();
		
		socket.close();
		server.close();
	}
}

 

下面看客户端代码:

public class SocketClient {
	
	public static void main(String[] args) throws IOException {
		//连接服务器
		Socket socket = new Socket(SocketServer.ip,SocketServer.port);
		System.out.println("client running...");
		
		System.out.println("-----insert your info:");
		//用户在控制台输入向服务器发送的信息
		BufferedReader brConsole = new BufferedReader(new InputStreamReader(System.in));
		//IO流
		PrintWriter pw = new PrintWriter(socket.getOutputStream());
		BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		
		String server = null;
		//如果用户输入exit则关闭Socket
		while(!"exit".equalsIgnoreCase(server =  brConsole.readLine())){
			pw.println(server);
			pw.flush();
			System.out.println("from server say:"+br.readLine());
		}
		//当用户输入exit时,把exit信息发送给服务器,服务器关闭当前Socket
		pw.println(server);
		pw.flush();
		
		pw.close();
		brConsole.close();
		br.close();
		
		socket.close();
	}
}

 

 

需要注意的是:

测试时,首先启动服务器,然后启动客户端即可;

使用PrintWriter写数据的时候务必使用println,因为对方使用BufferReader的readline来取数据,如果使用print则BufferReader读取不到数据。

这只是基础实例,不支持并发。

1
0
分享到:
评论

相关推荐

    Java Socket 聊天通信演示代码

    首先,Java Socket通信基于TCP(传输控制协议),它确保了数据的可靠传输,包括数据的顺序和无丢失。在聊天应用中,服务器端创建一个Socket监听特定的端口,等待客户端的连接请求。一旦客户端连接到服务器,它们之间...

    java与c++通过socket通信

    Java和C++之间的Socket通信是跨语言网络编程的一个常见应用场景,尤其在系统集成、设备通讯或者混合编程中。Socket提供了一种基于TCP/IP协议的进程间通信(IPC)方式,可以实现在不同操作系统上的进程之间的数据传输...

    java实现简单socket通信

    Java实现的简单Socket通信是网络编程中的基础技术,主要用于设备间的双向数据传输。在这个场景中,我们有两个窗口,一个作为服务器端,另一个作为客户端,它们通过TCP协议进行通信。TCP是一种面向连接的、可靠的传输...

    java上socket通信即时通信界面本

    Java Socket通信是网络编程中的重要一环,它提供了在两台计算机之间建立低级连接的能力,使得它们可以相互通信。在这个"java上socket通信即时通信界面本"中,我们很显然关注的是如何使用Java来构建一个具有图形用户...

    C#和java 之间基于Socket的通信

    以上知识点涵盖了Java和C#之间基于Socket通信的基础知识,实际开发中可能还需要结合具体的应用场景进行更深入的设计和优化。在SocketTest.rar、JavaSocketTest.rar文件中,可能包含了示例代码和运行指南,readme.txt...

    Java_socket 通信示例(Java源码)

    Java Socket通信是网络编程中的基础概念,主要用于两个应用程序之间的双向通信。在这个"Java_socket 通信示例"中,我们看到的是一个简单的聊天室应用,它利用了Java的Socket API来实现实时的数据交换。以下是对这个...

    实现nodejs与java的socket相互通信

    本示例聚焦于Node.js与Java之间的Socket通信,这是一个非常实用的技术,因为这两种技术在Web开发和后端服务中都占据着重要的地位。让我们详细探讨一下如何实现Node.js与Java的Socket通信。 首先,Socket是一种基于...

    java socket通信实现

    综上所述,Java Socket通信实现涉及网络编程基础、TCP/IP协议以及Java I/O流的使用。通过服务端和客户端的代码实现,可以理解数据如何在网络中双向传输,并且良好的注释有助于提升代码的可维护性。在实际项目中,...

    android中java和C的socket通信demo

    本教程将详细解释如何在Android中实现Java和C的Socket通信,特别是在涉及文件描述符传递的场景下。 1. **Java Socket基础** Java中的`java.net.Socket`类提供了网络通信的能力,它允许我们在两个应用程序之间建立...

    Java基于socket实现的客户端和服务端通信功能完整实例

    在Java中,Socket是实现网络通信的基础,通过Socket可以实现客户端和服务器端之间的通信。本文将详细介绍Java基于Socket实现的客户端和服务端通信功能,包括客户端和服务器端的实现、连接和通信的过程。 Socket的...

    java Socket通信实现

    Java Socket通信实现是Java网络编程中的重要组成部分,它允许两台计算机通过TCP/IP协议进行双向通信。在Java中,Socket提供了低级别的、基于连接的、面向数据流的通信API,可以用于实现客户端-服务器架构的应用程序...

    Java c++ socket通信

    Java和C++之间的Socket通信是跨语言网络编程的一个常见应用场景。Socket是计算机网络中的一个通信协议,它允许不同操作系统上的应用程序之间建立连接并交换数据。在这个场景中,Java作为客户端,C++作为服务端,两者...

    java.net包socket通信

    Java.NET包的Socket通信不仅限于基础的TCP连接,还可以通过SocketChannel和Selector等NIO(非阻塞I/O)类进行高效率的并发通信。NIO允许一个线程同时处理多个连接,提高了服务器的性能和可扩展性。 总之,Java.NET...

    基于Java实现的socket即时通信系统

    在Java中,`java.net.Socket`和`java.net.ServerSocket`类是实现Socket通信的核心类。ServerSocket用于服务器端,监听特定端口,等待客户端的连接请求;Socket则代表客户端,它与服务器建立连接后,可以进行数据的...

    Socket通信技术(Java)

    Socket通信技术是Java编程环境中实现网络通信的一种基础方式,它基于TCP/IP协议栈,允许两台计算机通过网络进行数据交换。TCP(传输控制协议)是一种面向连接的、可靠的传输协议,确保了数据的顺序和完整性。 在...

    Java socket编程实现两台主机间的通信

    Java Socket 编程实现两台主机间的通信 ...Java Socket 编程是实现两台主机间通信的重要技术之一。通过了解 Java Socket 编程的原理、实现方法和应用场景,可以更好地应用 Java Socket 编程来实现网络通信和数据传输。

    Java_socket 通信(源码+Java包)

    Java Socket通信是网络编程中的基础部分,主要用于两个应用程序之间的双向数据通信。在这个“Java_socket 通信(源码+Java包)”中,我们有两部分关键的代码实现:服务器端(server1.0.jar)和客户端(client1.0.jar),...

    C#和java的socket通信

    总结,C#和Java之间的Socket通信涉及网络编程基础、跨平台兼容性以及协议一致性。理解这些知识点,能帮助开发者构建可靠的、高性能的分布式系统。无论选择哪种语言,都需要深入理解网络通信的原理,并根据实际需求...

    Java基于socket的进程间通信 聊天小程序

    Java的Socket通信是进程间通信的一种,尤其是在网络环境中。 4. **服务器端实现**: 服务器端通常需要创建一个ServerSocket,监听特定端口上的连接请求。当有客户端连接时,ServerSocket会创建一个新的Socket实例,...

Global site tag (gtag.js) - Google Analytics