`

1,socket编程小例

 
阅读更多

创建一个EchoServer和一个EchoClient类,EchoServer用于从监听从客户端输入的字符串,当客户端输入"bye"时停止

 

package com.test.socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class EchoServer {
	private int port = 8000;
	private ServerSocket serverSocket;
	
	public static void main(String[] args) throws IOException {
		new EchoServer().service();
	}
	
	public EchoServer() throws IOException {
		serverSocket = new ServerSocket(port);
		System.out.println("服务器启用");
	}
	
	public String echo(String msg) {
		return "echo: " + msg;
	}

	private PrintWriter getWriter(Socket socket) throws IOException {
		OutputStream socketOut = socket.getOutputStream();
		return new PrintWriter(socketOut, true);
	}

	private BufferedReader getReader(Socket socket) throws IOException {
		InputStream socketIn = socket.getInputStream();
		return new BufferedReader(new InputStreamReader(socketIn));
	}
	
	public void service(){
		while(true){
			Socket socket = null;
			try{
				socket = serverSocket.accept();
				System.out.println("new connection accepted "
						+ socket.getInetAddress() + ":" + socket.getPort());
				BufferedReader br = getReader(socket);
				PrintWriter pw = getWriter(socket);
				String msg = null;
				while((msg =br.readLine()) != null){//输入,读取客户端的输入
					System.out.println(msg);
					pw.println(echo(msg));//输出,返回到客户端
					if(msg.endsWith("bye")){
						break;
					}
				}
			}catch (Exception e) {
				e.printStackTrace();
			}finally{
				try{
					if(socket != null){
						socket.close();
					}
				}catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}
}

 

package com.test.socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class EchoClient {
	private String host = "localhost";
	private int port = 8000;
	private Socket socket;
	
	public EchoClient() throws UnknownHostException, IOException {
		socket = new Socket(host,port);
	}
	
	public static void main(String[] args) throws UnknownHostException, IOException{
		new EchoClient().talk();
	}
	
	private PrintWriter getWriter(Socket socket)throws IOException{
		OutputStream socketOut = socket.getOutputStream();
		return new PrintWriter(socketOut,true);
	}
	
	private BufferedReader getReader(Socket socket)throws IOException{
		InputStream socketIn = socket.getInputStream();
		return new BufferedReader(new InputStreamReader(socketIn));
	}
	
	public void talk()throws IOException{
		try{
			BufferedReader br = getReader(socket);
			PrintWriter pw = getWriter(socket);
			BufferedReader localReader  = new BufferedReader(new InputStreamReader(System.in));
			String msg = null;
			while((msg = localReader.readLine()) !=null ){//读取在管理控制台输入的字符串
				pw.println(msg);//向服务器端传送字符串
				System.out.println(br.readLine());//读取服务器端返回的字符串
				if(msg.equals("bye")){
					break;
				}
			}
		}catch (Exception e) {
			e.printStackTrace();
		}finally{
			try{
				socket.close();
			}catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}
 
分享到:
评论

相关推荐

    Socket编程实验报告.docx

    Socket编程是网络编程的基础,主要用于实现两个网络节点之间的通信。在这个实验报告中,我们主要探讨了如何使用Java的Socket和ServerSocket类进行TCP协议的客户端和服务器端编程。 实验目标是掌握Socket编程的基本...

    socket应用小例程源代码

    本压缩包文件包含的"socket应用小例程源代码"将为我们揭示Socket编程的基本原理和实践技巧。 首先,让我们理解Socket的定义。Socket在操作系统层面上是一个抽象接口,它提供了一种标准的方式来实现不同网络上的进程...

    C# Socket编程

    ### C# Socket编程详解 在IT领域,网络通信是实现数据交换和远程操作的基础技术之一。C#作为一种广泛使用的编程语言,在.NET框架下提供了强大的网络编程功能,其中Socket编程是进行网络通信的核心技术之一。本篇...

    SOCKET客户端编程步骤实例

    在IT领域,网络通信是不可或缺的一部分,而Socket编程则是实现这一功能的核心技术。本文将深入讲解如何进行Socket客户端编程,以TCP协议为例,基于提供的"TCP_Client"文件名称,我们将探讨TCP客户端的基本步骤。 ...

    C语言的Socket编程例TCP协议

    socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯...

    Socket编程

    以一个电话网为例:电话的通话双方相当于相互通信的2个程序,电话号码就是ip地址。任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket;同时要知道对方的号码,相当于对方有一个固定的socket。然后向...

    windows下socket编程,远程控制

    在Windows环境下进行Socket编程,主要用于实现网络通信,例如创建远程控制程序。Socket接口提供了一种标准的方法,使得运行在不同机器上的应用程序可以通过网络进行数据交换。在这个案例中,使用Visual Studio 2013...

    Linux下多线程的阻塞模式下的socket编程

    本文将深入探讨如何在Linux环境下实现多线程的阻塞模式socket编程,以及它的工作原理和应用价值。 首先,理解“阻塞”和“非阻塞”模式。在Linux的socket编程中,阻塞模式是指当一个套接字(socket)调用如recv或...

    C# Socket异步聊天例

    在IT领域,网络编程是不可或缺的一部分,而C#语言提供了强大的Socket编程支持。本文将深入探讨C#中的Socket异步通信机制,以及如何利用它来实现一个简单的聊天应用。我们将分别解析服务器端(chatServer)和客户端...

    socket编程快速入门

    以TCP为例,Socket编程的基本步骤如下: 1. 服务器端首先创建一个Socket,然后将其绑定到一个特定的端口。这个过程通过`bind()`函数完成。 2. 绑定后的Socket需要开始监听连接请求,使用`listen()`函数进入监听状态...

    C# Socket编程完成控制台服务器端和web客户端(调试通过)

    在本例中,我们将创建一个控制台服务器端和一个 web 客户端,使用 Socket 编程技术实现它们之间的通信。 一、C# Socket 编程技术概述 C# Socket 编程技术是指使用 C# 语言实现的 Socket 编程技术,用于创建网络...

    Socket编程实例(ASP.NET)

    Socket编程在IT行业中是网络通信的基础,特别是在ASP.NET框架下,它允许开发者创建高性能、低级别的网络应用程序。本文将深入探讨Socket编程的概念、在ASP.NET中的应用,以及如何实现简单的发送和接收消息功能,包括...

    Java Socket编程实现的简单多线程WEB服务器

    Java Socket 编程实现的简单多线程 WEB 服务器 ...1. Java Socket 编程的基础知识 2. ServerSocket 和 Socket 的使用 3. 多线程编程在服务器端的应用 4. HTTP 协议的基础知识 5. PrintWriter 对象的使用

    socket编程总结.pdf

    本文将根据标题《socket编程总结.pdf》和描述中的内容,详细讲解Socket编程的关键步骤,并以TCP协议为例进行阐述。 首先,Socket编程通常涉及两个主要角色:服务器端和客户端。在Windows环境下,使用Socket API需要...

    Socket 编程(python)

    Socket编程是网络编程的基础,主要涉及应用进程间的通信。Python作为一门多用途语言,也提供了丰富的Socket库支持Socket编程。本实验旨在帮助学习者理解Socket通信的基本原理,并掌握Python中的Socket编程方法。 ...

    socket网络编程C++版

    socket网络编程C++版小实验,有客户端和服务器端的源代码。 socket的英文原义是“孔”或“插座”。作为进程通信机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两...

    Socket通信小例

    在C#中,`System.Net.Sockets.Socket`类是进行Socket编程的主要接口。创建Socket对象时,我们需要指定它的地址族(如IPv4或IPv6)、套接字类型(如流式或数据报)以及协议(如TCP或UDP)。 在描述中提到的"在同一或...

    Python编程500例快速构建可执行高质量代码.pptx

    5、网络编程:本书对Python中的网络编程进行了深入探讨,涵盖了socket编程、HTTP编程、FTP编程等方面的内容。读者可以通过学习这些内容快速掌握Python中的网络编程。 6、多线程编程:本书对Python中的多线程编程...

    以聊天为例讲解关于Android_的socket编程

    ### Android中的Socket编程详解 #### 一、引言 在移动互联网时代,应用程序之间的网络通信变得尤为重要。Android作为主流的移动操作系统之一,在进行网络通信时提供了多种方式,其中Socket编程是一种非常基础且...

    java编程200例(附:JAVA文档完全解读中文版)

    "Java编程200例(附:JAVA文档完全解读中文版)"是一个非常适合初学者和进阶者的学习资源,它提供了丰富的实例来帮助理解Java的核心概念和技术。 这200个编程实例涵盖了Java语言的基础到高级主题,包括但不限于: ...

Global site tag (gtag.js) - Google Analytics