`
mabusyao
  • 浏览: 255550 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

socket, thread, JDBC以及守护进程

    博客分类:
  • java
阅读更多
最近项目尚未启动,于是花了点时候复习一些以前学习过的东西,诸如socket, thread, RMI, JDBC等等。

一轮学习下来,最大的感受就是,现在各种的框架实在是太多了,以至于我们都忘记了这些底层的东西,其实很多时候,框架能提供给我们的,未必是我们真正想要的东西。而当我们真正理解了底层的这些知识,学习这些框架也变得简单的多。

用Thread和Socket写了一个非常傻瓜的通讯连接,但是个人感觉还是获益匪浅。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;


public class ServerSocketTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Server server = new Server();
		Thread serverThread = new Thread(server);
		serverThread.start();
		
		try {
			Thread.sleep(1000);
		} catch (Exception e) {
			e.printStackTrace();
			return;
		}
		
		Client client = new Client();
		Thread clientThread = new Thread(client);
		clientThread.start();
	}


}

class Server implements Runnable{
	public void run() {
		ServerSocket ss = null;
		try {
			ss = new ServerSocket(80);
		} catch (IOException e) {
			System.out.println("IOException when trying to open server socket");
			e.printStackTrace();
			return;
		}
		
		while(true) {
			try {
				Socket socket = ss.accept();
				//TODO: handle to socket;
				
				process(socket);
				
				socket.close();
			} catch(IOException e) {
				System.out.println("IOException when trying to handle socket");
				e.printStackTrace();
				return;
			}
		}
	}
	
	private void process(Socket socket) {
		try {
			BufferedWriter writer = 
				new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
			
			writer.append("Hello socket!");
			
			//writer.flush();
			writer.close();
		} catch(IOException e) {
			System.out.println("IOException when trying to write socket");
			e.printStackTrace();
			return;
		}
		
	}	
}

class Client implements Runnable{
	public void run() {
		try {
			Socket server = new Socket("localhost", 80);
			
			BufferedReader reader = 
				new BufferedReader(new InputStreamReader(server.getInputStream()));
			
			String val = reader.readLine();
			
			System.out.println("result is: " + val);
		} catch(IOException e) {
			System.out.println("IOException when trying to read socket");
			e.printStackTrace();
			return;
		}
	}
}



突然回想起当年读书的时候,写过一个用socket通讯的online五子棋对战游戏,还为之写过一个单机版的,自行设计了电脑的算法。现在想来,真的是太有成就感了。后来工作以后,就再没有这样的机会做这些事情了,似乎我们都已经忘记了当初的理想,变成了大公司的一个螺丝钉,为着一些飘渺虚无的目标努力着。
分享到:
评论

相关推荐

    socket_daemon.rar_daemon_linux 守护进程_socket daemon._守护进程_服务 守护

    守护进程的设计应考虑并发处理能力、错误处理以及资源管理,以确保服务的健壮性和可靠性。 在实际开发中,我们还会使用到如`select()`、`poll()`或`epoll()`等I/O多路复用技术来提高服务器处理并发连接的能力。此外...

    基于socket的Native层守护进程

    这是基于socket连接来判断服务是否存在的一个守护进程。使用方法: NDKFork port 包名/.服务名 被守护的服务需要创建一个监听socket 其它保活方案的测试情况可以看我的测试总结: ...

    守护进程(互相监听)

    守护进程在各种服务、监控任务以及系统管理中扮演着重要角色。在Android系统中,由于其基于Linux内核,也支持守护进程的概念,但实现方式略有不同。 标题"守护进程(互相监听)"可能指的是两个守护进程之间进行通信...

    java实现守护进程,有单独的监听进程, 两个或多个进程,两个或多个jvm

    在Java编程环境中,实现守护进程(Daemon)以及创建多个进程和JVM是非常常见的需求,特别是在构建分布式系统或者需要持续后台运行的服务时。本篇将详细阐述如何使用Java来实现这些功能。 守护进程通常是一个在后台...

    Socket进程守护.zip

    在IT行业中,网络编程是...总之,Socket进程守护涉及到网络编程、Android服务以及后台进程管理等多个技术领域,是实现稳定、可靠的网络应用所必需的技能。理解并掌握这些知识点对于开发复杂的跨设备通信系统至关重要。

    linux守护进程

    ### Linux守护进程详解 ...通过以上的讲解,我们可以看到守护进程在Linux系统中的重要作用以及其实现的基本步骤。无论是简单的定时任务还是复杂的网络服务,守护进程都能够提供稳定可靠的后台服务支持。

    体育馆预定系统 android socket java jdbc mysql

    体育馆预定系统是一款基于Android平台的应用,它利用Socket通信技术、Java编程语言、JDBC数据库连接接口以及MySQL数据库管理系统,实现了用户对体育馆设施的预订功能。下面将分别介绍这些关键技术点。 1. Android:...

    基于socket的native守护进程

    这是基于socket连接来判断服务是否存在的一个守护进程。使用方法: NDKFork port 包名/.服务名 被守护的服务需要创建一个监听socket 其它保活方案的测试情况可以看我的测试总结: ...

    利用UDP协议与socket文件完成两个进程之间的网络通信

    1. 调用`socket()`函数,指定`AF_INET`(IPv4)或`AF_INET6`(IPv6)作为地址家族,以及`SOCK_DGRAM`作为套接字类型,以创建一个UDP套接字。 2. 使用`bind()`函数绑定套接字到本地端口,以便接收数据。服务端需要...

    socket 实现进程间通信

    本文将深入探讨如何利用socket来实现在同一台机器上三个进程间的通信,同时涉及select()函数、信号处理以及进程重启的技术。 首先,让我们理解什么是socket。Socket是网络编程中的接口,它允许应用程序发送和接收...

    Socket+JDBC+IO实现Java文件上传下载器DEMO详解

    Socket+JDBC+IO实现Java文件上传下载器DEMO详解 本资源详解了使用Socket+JDBC+IO实现Java文件上传下载器的DEMO,涵盖了用户注册、用户登录、文件上传、文件下载、文件更新、文件删除、查看数据库所有文件、查看文件...

    python 实现的多进程 socket通讯框架,支持多进程进行发送和接收

    Python中的多进程Socket通信框架是实现并发网络服务的一种高效方式,尤其在处理大量并发连接时。这个框架允许多个进程同时发送和接收数据,提高系统的并行处理能力。下面将详细介绍Python的多进程和Socket编程相关的...

    socket 多进程实例

    通常,这样的文件会包含Socket的初始化、监听、接受连接、创建子进程、数据收发以及关闭连接等相关逻辑。 在实现多进程Socket通信时,主要涉及以下几个关键知识点: 1. **Socket创建与绑定**:首先,服务器端需要...

    php实现简单的守护进程创建、开启与关闭操作

    本文将详细解析守护进程的概念,如何用PHP实现守护进程的创建、开启与关闭,以及与之相关的技巧和注意事项。 首先,守护进程是在后台运行的进程,它不属于任何终端用户会话,并且它没有控制终端。在Unix和类Unix...

    JDBC+IO+Socket

    Jdbc+IO+Socket 1.用户注册 2.用户登录 3.文件上传 通过这个例子,可以了解Servlet底层实现原理,其实理解起来也挺简单的。 https://blog.csdn.net/m0_37499059/article/details/80473410

    Socket编程和获取可用进程

    在C++中,socket编程依赖于<sys/socket.h>头文件,而获取进程信息可能需要使用、以及和等头文件。 对于Socket编程,我们首先需要创建一个socket对象,然后绑定IP地址和端口号,监听连接请求。当有新的连接请求时,...

    Kafka生产者守护进程Bruce.zip

    Bruce 是 Apache Kafka 的生产者守护进程,它简化了客户端发送消息到 Kafka ,无需关注后端的 Kafka 集群。Bruce 主要处理: Routing messages to the proper brokers, and spreading the load evenly across ...

    C# IPC 之 Socket 进程间通信 源码

    标签"**C# IPC Socket 进程 通信**"进一步强调了使用C#语言,Socket技术,以及与进程通信相关的主题。这里,Socket作为通信媒介,可以建立客户端(Client)和服务器端(Server)之间的连接,使得不同进程间的数据...

    IPC之使用Socket进程间通信

    **标题解析:** "IPC之使用Socket进程间通信" 指的是利用Socket技术进行进程间的通信(IPC,Inter-Process Communication)。这里的Socket通常是指网络套接字,它在操作系统层面上提供了一种进程间通信的机制,允许...

    Linux上实现基于Socket_的多进程实时通信

    在Linux系统中,实现基于Socket的多进程实时通信是一项重要的技术,它允许不同的进程间高效地交换数据。本文将详细介绍如何创建一个通信服务器(server)来作为中介,处理多个客户端(client)的连接和通信请求。 ...

Global site tag (gtag.js) - Google Analytics