use IO::Socket::INET; use strict; use warnings; my $s = IO::Socket::INET->new(Proto => "tcp", LocalHost => "localhost", LocalPort => 3000, Timeout => 60, Listen => 10, Reuse => 1) || die "failed to start\n"; print "regexp service started\n"; while (1) { if (my $c = $s->accept()) { print "Got one service request\n"; my $func = readLine($c); if ($func eq "match") { my $string = readLine($c); my $pattern = readLine($c); if ($string =~ m/$pattern/) { print $c "1\n"; } else { print $c "0\n"; } } elsif ($func eq "substitute") { my $string = readLine($c); my $pattern = readLine($c); my $replacement = readLine($c); $string =~ s/$pattern/$replacement/; print $c "$string\n"; } close($c); } } sub readLine { my $c = shift; my $line = <$c>; $line =~ /(.*)\r\n/; return $1; } #### import java.net.*; import java.io.*; class RegExp { public static boolean match(String string, String pattern) { try { Socket s = new Socket("localhost", 3000); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter out = new PrintWriter(new BufferedOutputStream(s.getOutputStream()), true); out.println(new String("match")); out.println(string); out.println(pattern); String data = in.readLine(); if (data.equals("1")) { return true; } else { return false; } } catch (IOException e) { System.out.print(e); return false; } } public static String substitute(String string, String pattern, String replacement) { try { Socket s = new Socket("localhost", 3000); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter out = new PrintWriter(new BufferedOutputStream(s.getOutputStream()), true); out.println(new String("substitute")); out.println(string); out.println(pattern); out.println(replacement); String data = in.readLine(); return data; } catch (IOException e) { System.out.print(e); return null; } } } #### class RegExpTest { public static void main(String[] argv) { if (argv[0].equals("m")) { boolean result = RegExp.match(argv[1], argv[2]); System.out.print(result); } else if (argv[0].equals("s")) { String result = RegExp.substitute(argv[1], argv[2], argv[3]); System.out.print(result); } } }