Initial commit

This commit is contained in:
Johan Maasing 2024-11-27 10:55:10 +01:00
parent 81a0e108ab
commit 3a44c2b3ae
5 changed files with 204 additions and 0 deletions

81
.gitignore vendored Normal file
View file

@ -0,0 +1,81 @@
## File-based project format:
*.ipr
*.iws
**/.idea
## Plugin-specific files:
# IntelliJ
/out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
# ---> Java
*.class
*/target/*
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
# ---> SublimeText
# cache files for sublime text
*.tmlanguage.cache
*.tmPreferences.cache
*.stTheme.cache
# workspace files are user-specific
*.sublime-workspace
# project files should be checked into the repository, unless a significant
# proportion of contributors will probably not be using SublimeText
# *.sublime-project
# sftp configuration file
sftp-config.json
# ---> macOS
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

17
JavaUDSClient/pom.xml Normal file
View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>se.rutdev.proxmig</groupId>
<artifactId>JavaUDSClient</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>23</maven.compiler.source>
<maven.compiler.target>23</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

View file

@ -0,0 +1,40 @@
package nu.zoom.checked.client;
import java.io.IOException;
import java.net.StandardProtocolFamily;
import java.net.UnixDomainSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.UUID;
public class Main {
public static void main(String[] args) throws IOException {
new Main().run();
}
private void run() throws IOException {
try (var clientChannel = SocketChannel.open(StandardProtocolFamily.UNIX)) {
var serverPath = Path.of("/tmp").resolve("udsserver.sock") ;
var serverAddress = UnixDomainSocketAddress.of(serverPath);
clientChannel.connect(serverAddress);
var clientMessage = "quit från - " + UUID.randomUUID();
sendMessage(clientMessage, clientChannel);
}
}
private static void sendMessage(String clientMessage, SocketChannel clientChannel) throws IOException {
var messageBytes = clientMessage.getBytes(StandardCharsets.UTF_8);
var messageBuffer = ByteBuffer.allocate(500);
messageBuffer.put((byte) messageBytes.length);
messageBuffer.put(messageBytes);
messageBuffer.flip();
clientChannel.write(messageBuffer);
}
static class MessageToLongException extends Exception {}
}

17
JavaUDSServer/pom.xml Normal file
View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>se.rutdev.proxmig</groupId>
<artifactId>JavaUDSServer</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>23</maven.compiler.source>
<maven.compiler.target>23</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

View file

@ -0,0 +1,49 @@
package nu.zoom.checked.server;
import java.io.IOException;
import java.net.StandardProtocolFamily;
import java.net.UnixDomainSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.ServerSocketChannel;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
public class Main {
public static void main(String[] args) throws IOException {
new Main().run();
}
private void run() throws IOException {
var path = Path.of("/tmp").resolve("udsserver.sock") ;
Files.deleteIfExists(path);
var socketAddress = UnixDomainSocketAddress.of(path);
ServerSocketChannel serverChannel = ServerSocketChannel
.open(StandardProtocolFamily.UNIX);
serverChannel.bind(socketAddress);
boolean keepRunning = true;
while (keepRunning) {
try (var clientChannel = serverChannel.accept()) {
if (clientChannel != null) {
var buffer = ByteBuffer.allocate(500);
clientChannel.read(buffer);
buffer.flip();
var length = Byte.toUnsignedInt(buffer.get());
if (length < 400 && length > 0) {
var rawMessage = new byte[length];
buffer.get(rawMessage);
var message = new String(rawMessage, StandardCharsets.UTF_8);
System.out.println(message);
if (message.startsWith("q")) {
keepRunning = false;
}
}
}
}
}
serverChannel.close();
Files.deleteIfExists(path);
}
}