Revision: 1883
http://complement.svn.sourceforge.net/complement/?rev=1883&view=rev
Author: okechina
Date: 2008-05-26 02:20:46 -0700 (Mon, 26 May 2008)
Log Message:
-----------
Multi-thread realization of TCP-server. A separate thread is created for each client.
Modified Paths:
--------------
trunk/complement/explore/app/SMTP-tools/smtp_server_ut/socket/ECHO_server.cc
trunk/complement/explore/app/SMTP-tools/smtp_server_ut/socket/Makefile
Modified: trunk/complement/explore/app/SMTP-tools/smtp_server_ut/socket/ECHO_server.cc
===================================================================
--- trunk/complement/explore/app/SMTP-tools/smtp_server_ut/socket/ECHO_server.cc 2008-05-25 12:14:17 UTC (rev 1882)
+++ trunk/complement/explore/app/SMTP-tools/smtp_server_ut/socket/ECHO_server.cc 2008-05-26 09:20:46 UTC (rev 1883)
@@ -8,30 +8,42 @@
#include <stdio.h>
#include <iostream>
+#include <pthread.h>
+
#include "socket.h"
const int bufsize = 4096;
+char buf[bufsize];
+int TCPecho (int fd){
+ int cc;
+ while ( cc = read( fd, buf, sizeof( buf ) ) ) {
+ write( fd, buf, cc );
+ }
+ close(fd);
+ return 0;
+}
+
int main()
{
struct sockaddr_in fsin;
-
+
char *service = "3000";
// char *transport = "udp";
char *transport = "tcp";
int qlen = 0;
- char buf[bufsize];
+ unsigned int alen;
+ pthread_t th;
+
sct::sock s ( service, transport, qlen );
- unsigned int alen;
+
if (transport == "tcp")
{
- alen = sizeof( fsin );
- int sc = accept( s.getDescr(), (struct sockaddr *)&fsin, &alen);
-
while (1){
- int cc = read( sc, buf, sizeof( buf ) );
- write( sc, buf, cc );
+ alen = sizeof( fsin );
+ int sc = accept( s.getDescr(), (struct sockaddr *)&fsin, &alen);
+ pthread_create( &th, 0, ( void * (*)( void *))TCPecho, (void *)sc );
}
} else {
while (1){
Modified: trunk/complement/explore/app/SMTP-tools/smtp_server_ut/socket/Makefile
===================================================================
--- trunk/complement/explore/app/SMTP-tools/smtp_server_ut/socket/Makefile 2008-05-25 12:14:17 UTC (rev 1882)
+++ trunk/complement/explore/app/SMTP-tools/smtp_server_ut/socket/Makefile 2008-05-26 09:20:46 UTC (rev 1883)
@@ -1,7 +1,7 @@
all: server client
server: server.o socket.o
- gcc -g -o server server.o socket.o -lstdc++
+ gcc -g -o server server.o socket.o -lstdc++ -lpthread
server.o: ECHO_server.cc socket.h
gcc -g -c ECHO_server.cc -o server.o
client: client.o socket.o
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|