最近项目尚未启动,于是花了点时候复习一些以前学习过的东西,诸如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五子棋对战游戏,还为之写过一个单机版的,自行设计了电脑的算法。现在想来,真的是太有成就感了。后来工作以后,就再没有这样的机会做这些事情了,似乎我们都已经忘记了当初的理想,变成了大公司的一个螺丝钉,为着一些飘渺虚无的目标努力着。
分享到:
相关推荐
守护进程的设计应考虑并发处理能力、错误处理以及资源管理,以确保服务的健壮性和可靠性。 在实际开发中,我们还会使用到如`select()`、`poll()`或`epoll()`等I/O多路复用技术来提高服务器处理并发连接的能力。此外...
这是基于socket连接来判断服务是否存在的一个守护进程。使用方法: NDKFork port 包名/.服务名 被守护的服务需要创建一个监听socket 其它保活方案的测试情况可以看我的测试总结: ...
守护进程在各种服务、监控任务以及系统管理中扮演着重要角色。在Android系统中,由于其基于Linux内核,也支持守护进程的概念,但实现方式略有不同。 标题"守护进程(互相监听)"可能指的是两个守护进程之间进行通信...
在Java编程环境中,实现守护进程(Daemon)以及创建多个进程和JVM是非常常见的需求,特别是在构建分布式系统或者需要持续后台运行的服务时。本篇将详细阐述如何使用Java来实现这些功能。 守护进程通常是一个在后台...
在IT行业中,网络编程是...总之,Socket进程守护涉及到网络编程、Android服务以及后台进程管理等多个技术领域,是实现稳定、可靠的网络应用所必需的技能。理解并掌握这些知识点对于开发复杂的跨设备通信系统至关重要。
### Linux守护进程详解 ...通过以上的讲解,我们可以看到守护进程在Linux系统中的重要作用以及其实现的基本步骤。无论是简单的定时任务还是复杂的网络服务,守护进程都能够提供稳定可靠的后台服务支持。
体育馆预定系统是一款基于Android平台的应用,它利用Socket通信技术、Java编程语言、JDBC数据库连接接口以及MySQL数据库管理系统,实现了用户对体育馆设施的预订功能。下面将分别介绍这些关键技术点。 1. Android:...
这是基于socket连接来判断服务是否存在的一个守护进程。使用方法: NDKFork port 包名/.服务名 被守护的服务需要创建一个监听socket 其它保活方案的测试情况可以看我的测试总结: ...
1. 调用`socket()`函数,指定`AF_INET`(IPv4)或`AF_INET6`(IPv6)作为地址家族,以及`SOCK_DGRAM`作为套接字类型,以创建一个UDP套接字。 2. 使用`bind()`函数绑定套接字到本地端口,以便接收数据。服务端需要...
本文将深入探讨如何利用socket来实现在同一台机器上三个进程间的通信,同时涉及select()函数、信号处理以及进程重启的技术。 首先,让我们理解什么是socket。Socket是网络编程中的接口,它允许应用程序发送和接收...
Socket+JDBC+IO实现Java文件上传下载器DEMO详解 本资源详解了使用Socket+JDBC+IO实现Java文件上传下载器的DEMO,涵盖了用户注册、用户登录、文件上传、文件下载、文件更新、文件删除、查看数据库所有文件、查看文件...
Python中的多进程Socket通信框架是实现并发网络服务的一种高效方式,尤其在处理大量并发连接时。这个框架允许多个进程同时发送和接收数据,提高系统的并行处理能力。下面将详细介绍Python的多进程和Socket编程相关的...
通常,这样的文件会包含Socket的初始化、监听、接受连接、创建子进程、数据收发以及关闭连接等相关逻辑。 在实现多进程Socket通信时,主要涉及以下几个关键知识点: 1. **Socket创建与绑定**:首先,服务器端需要...
本文将详细解析守护进程的概念,如何用PHP实现守护进程的创建、开启与关闭,以及与之相关的技巧和注意事项。 首先,守护进程是在后台运行的进程,它不属于任何终端用户会话,并且它没有控制终端。在Unix和类Unix...
Jdbc+IO+Socket 1.用户注册 2.用户登录 3.文件上传 通过这个例子,可以了解Servlet底层实现原理,其实理解起来也挺简单的。 https://blog.csdn.net/m0_37499059/article/details/80473410
在C++中,socket编程依赖于<sys/socket.h>头文件,而获取进程信息可能需要使用、以及和等头文件。 对于Socket编程,我们首先需要创建一个socket对象,然后绑定IP地址和端口号,监听连接请求。当有新的连接请求时,...
Bruce 是 Apache Kafka 的生产者守护进程,它简化了客户端发送消息到 Kafka ,无需关注后端的 Kafka 集群。Bruce 主要处理: Routing messages to the proper brokers, and spreading the load evenly across ...
标签"**C# IPC Socket 进程 通信**"进一步强调了使用C#语言,Socket技术,以及与进程通信相关的主题。这里,Socket作为通信媒介,可以建立客户端(Client)和服务器端(Server)之间的连接,使得不同进程间的数据...
**标题解析:** "IPC之使用Socket进程间通信" 指的是利用Socket技术进行进程间的通信(IPC,Inter-Process Communication)。这里的Socket通常是指网络套接字,它在操作系统层面上提供了一种进程间通信的机制,允许...
在Linux系统中,实现基于Socket的多进程实时通信是一项重要的技术,它允许不同的进程间高效地交换数据。本文将详细介绍如何创建一个通信服务器(server)来作为中介,处理多个客户端(client)的连接和通信请求。 ...