testprogs/win32: add npecho_*2.c
authorStefan Metzmacher <metze@samba.org>
Mon, 9 Feb 2009 10:54:34 +0000 (11:54 +0100)
committerStefan Metzmacher <metze@samba.org>
Mon, 9 Feb 2009 10:57:13 +0000 (11:57 +0100)
This exlores some details of message type named pipes.

metze

testprogs/win32/npecho/GNUmakefile
testprogs/win32/npecho/NMakefile
testprogs/win32/npecho/npecho_client2.c [new file with mode: 0755]
testprogs/win32/npecho/npecho_server2.c [new file with mode: 0755]

index 33cf95def149cfcb195f954739960afc1ecab1ca..64fb79f5cc54d99cd6be871f3a35f92e4568d199 100755 (executable)
@@ -1,20 +1,23 @@
 INCLUDES=-I.
-CFLAGS=$(INCLUDES) 
+CFLAGS=$(INCLUDES)
 
-all: npecho_client.exe npecho_server.exe
+NPECHO = npecho_client.exe
+#npecho_server.exe
+
+NPECHO2 = npecho_client2.exe npecho_server2.exe
+
+all: $(NPECHO) $(NPECHO2)
 
 CC = i586-mingw32msvc-gcc
 
-.SUFFIXES: .c .obj
+.SUFFIXES: .c .obj .exe
 
-.c.obj: 
+.c.obj:
        $(CC) $(CFLAGS) -c $< -o $@
 
-clean:
-       del *~ *.obj *.exe 
+.obj.exe:
+       $(CC) $(CFLAGS) -o $@ $< $(LIBS)
 
-npecho_client.exe: npecho_client.obj
-npecho_server.exe: npecho_server.obj
+clean:
+       del *~ *.obj *.exe
 
-%.exe: 
-       $(CC) $(CFLAGS) -o $@ $< $(LIBS)
index b52a9c7ab7817f35f10f07c71acceae352bccf99..a0951b0f88e96b090c9db064d4a1a66bacf931a3 100755 (executable)
@@ -1,7 +1,11 @@
 INCLUDES=-I 
 CFLAGS=$(INCLUDES) -Zi -nologo
 
-all: npecho_client.exe npecho_server.exe
+NPECHO = npecho_client.exe
+# missing npecho_server.exe
+NPECHO2 = npecho_client2.exe npecho_server2.exe
+
+all: $(NPECHO) $(NPECHO2)
 
 clean:
        del *~ *.obj *.exe 
@@ -11,3 +15,9 @@ npecho_client.exe: npecho_client.obj
 
 npecho_server.exe: npecho_server.obj 
        $(CC) $(CFLAGS) -o npecho_server.exe npecho_server.obj $(LIBS)
+
+npecho_client2.exe: npecho_client2.obj
+       $(CC) $(CFLAGS) -o npecho_client2.exe npecho_client2.obj $(LIBS)
+
+npecho_server2.exe: npecho_server2.obj
+       $(CC) $(CFLAGS) -o npecho_server2.exe npecho_server2.obj $(LIBS)
diff --git a/testprogs/win32/npecho/npecho_client2.c b/testprogs/win32/npecho/npecho_client2.c
new file mode 100755 (executable)
index 0000000..0486cef
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Simple Named Pipe Client
+ * (C) 2005 Jelmer Vernooij <jelmer@samba.org>
+ * (C) 2009 Stefan Metzmacher <metze@samba.org>
+ * Published to the public domain
+ */
+
+#include <windows.h>
+#include <stdio.h>
+
+#define ECHODATA "Black Dog"
+
+int main(int argc, char *argv[])
+{
+       HANDLE h;
+       DWORD numread = 0;
+       char *outbuffer = malloc(sizeof(ECHODATA)*2);
+
+       if (argc == 1) {
+               printf("Usage: %s pipename\n", argv[0]);
+               printf("  Where pipename is something like \\\\servername\\NPECHO\n");
+               return -1;
+       }
+
+       h = CreateFile(argv[1], GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
+       if (h == INVALID_HANDLE_VALUE) {
+               printf("Error opening: %d\n", GetLastError());
+               return -1;
+       }
+
+       Sleep(1000);
+
+       if (!ReadFile(h, outbuffer, sizeof(ECHODATA)*2, &numread, NULL)) {
+               printf("Error reading: %d\n", GetLastError());
+               return -1;
+       }
+
+       printf("Read: %s %d\n", outbuffer, numread);
+
+       if (!ReadFile(h, outbuffer, sizeof(ECHODATA)*2, &numread, NULL)) {
+               printf("Error reading: %d\n", GetLastError());
+               return -1;
+       }
+
+       printf("Read: %s %d\n", outbuffer, numread);
+
+       return 0;
+}
diff --git a/testprogs/win32/npecho/npecho_server2.c b/testprogs/win32/npecho/npecho_server2.c
new file mode 100755 (executable)
index 0000000..72edb02
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Simple Named Pipe Client
+ * (C) 2005 Jelmer Vernooij <jelmer@samba.org>
+ * (C) 2009 Stefan Metzmacher <metze@samba.org>
+ * Published to the public domain
+ */
+
+#include <windows.h>
+#include <stdio.h>
+
+#define ECHODATA "Black Dog"
+
+int main(int argc, char *argv[])
+{
+       HANDLE h;
+       DWORD numread = 0;
+       char *outbuffer = malloc(sizeof(ECHODATA));
+
+       if (argc == 1) {
+               printf("Usage: %s pipename\n", argv[0]);
+               printf("  Where pipename is something like \\\\servername\\NPECHO\n");
+               return -1;
+       }
+
+       h = CreateNamedPipe(argv[1],
+                           PIPE_ACCESS_DUPLEX,
+                           PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
+                           PIPE_UNLIMITED_INSTANCES,
+                           1024,
+                           1024,
+                           0,
+                           NULL);
+       if (h == INVALID_HANDLE_VALUE) {
+               printf("Error opening: %d\n", GetLastError());
+               return -1;
+       }
+
+       ConnectNamedPipe(h, NULL);
+
+       if (!WriteFile(h, ECHODATA, sizeof(ECHODATA), &numread, NULL)) {
+               printf("Error writing: %d\n", GetLastError());
+               return -1;
+       }
+
+       if (!WriteFile(h, ECHODATA, sizeof(ECHODATA), &numread, NULL)) {
+               printf("Error writing: %d\n", GetLastError());
+               return -1;
+       }
+
+       FlushFileBuffers(h);
+       DisconnectNamedPipe(h);
+       CloseHandle(h);
+
+       return 0;
+}