From 27ccb8cd939071033ec35450f237817583b8d01c Mon Sep 17 00:00:00 2001 From: Kolan Sh Date: Mon, 2 May 2011 16:59:54 +0400 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D1=82=D1=83?= =?UTF-8?q?=D0=B4=D1=8B-=D1=81=D1=8E=D0=B4=D1=8B=20(=D1=83=D0=B4=D0=B0?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B5=D0=B5?= =?UTF-8?q?=20=D0=B2=20=D0=BE=D0=BF=D1=87=D0=B5=D0=BC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- c/masync_server/Makefile | 62 +++++++++++++++++++++++++++ c/masync_server/echo-client.c | 7 +--- c/masync_server/echo-server.c | 41 +++--------------- c/masync_server/int2ip.c | 35 ---------------- c/masync_server/ip2int.c | 32 -------------- c/masync_server/masync_server.geany | 24 +++++++++++ c/masync_server/netfuncs.c | 17 ++++++++ c/masync_server/netfuncs.h | 8 ++++ c/masync_server/sock1.c | 65 ----------------------------- c/masync_server/tmp1.c | 25 ----------- c/masync_server/xerror.c | 17 ++++++++ c/masync_server/xerror.h | 8 ++++ 12 files changed, 143 insertions(+), 198 deletions(-) create mode 100644 c/masync_server/Makefile delete mode 100644 c/masync_server/int2ip.c delete mode 100644 c/masync_server/ip2int.c create mode 100644 c/masync_server/masync_server.geany create mode 100644 c/masync_server/netfuncs.c create mode 100644 c/masync_server/netfuncs.h delete mode 100644 c/masync_server/sock1.c delete mode 100644 c/masync_server/tmp1.c create mode 100644 c/masync_server/xerror.c create mode 100644 c/masync_server/xerror.h diff --git a/c/masync_server/Makefile b/c/masync_server/Makefile new file mode 100644 index 0000000..3244325 --- /dev/null +++ b/c/masync_server/Makefile @@ -0,0 +1,62 @@ +TARGET=$(shell basename `pwd`) +SOURCES=$(wildcard *.c) +OBJECTS=$(SOURCES:%.c=%.o) + +#CFLAGS=-march=core2 -mtune=core2 -O2 -mfpmath=sse -msse4.1 -pipe +#LDFLAGS=-Wl,-O1 -Wl,--as-needed + +CFLAGS+=$(shell pkg-config --cflags liblist) +LDFLAGS+=$(shell pkg-config --libs liblist) -lpthread + +all: $(TARGET) + +$(OBJECTS): $(SOURCES) + +$(TARGET): $(OBJECTS) + +echo-server: echo-server.o xerror.o + +clean: + $(RM) $(OBJECTS) $(TARGET) + +.PHONY: all clean + +# c++ +#TARGET=$(shell basename `pwd`) +#SOURCES=$(wildcard *.cpp) +#OBJECTS=$(SOURCES:%.cpp=%.o) +# +#all: $(TARGET) +# +#$(OBJECTS): $(SOURCES) +# +#$(TARGET): $(OBJECTS) +# $(CXX) -o $(TARGET) $(LDFLAGS) $(OBJECTS) $(LOADLIBES) $(LDLIBS) +# +#clean: +# $(RM) $(OBJECTS) $(TARGET) +# +#.PHONY: all clean + + +#CC=gcc +#CFLAGS=-c -Wall +##LDFLAGS= +##INCLUDES=-I.. ./inc +##LIBS=-L. --llist +# +## all: standserver test_xmalloc +# +#all: xerror.o xmalloc.o +# +#standserver: standserver.o xmalloc.o +# $(CC) $(CFLAGS) standserver.o xmalloc.o -o standserver +# +#xmalloc.o: +# $(CC) $(CFLAGS) xmalloc.c +# +#xerror.o: +# $(CC) $(CFLAGS) xerror.c +# +#clean: +# rm -rf *.o *.gch standserver test_xmalloc diff --git a/c/masync_server/echo-client.c b/c/masync_server/echo-client.c index 213a74a..ba6cc05 100644 --- a/c/masync_server/echo-client.c +++ b/c/masync_server/echo-client.c @@ -7,12 +7,7 @@ #include #include -unsigned int ip2int(const char *s) -{ - int ip[4]; - sscanf(s, "%d.%d.%d.%d", ip, ip + 1, ip + 2, ip + 3); - return ip[0] << 24 | ip[1] << 16 | ip[2] << 8 | ip[3]; -} +#include "netfuncs.h" int sendall(int s, char *buf, int len, int flags) { diff --git a/c/masync_server/echo-server.c b/c/masync_server/echo-server.c index 8c59082..5f95355 100644 --- a/c/masync_server/echo-server.c +++ b/c/masync_server/echo-server.c @@ -11,18 +11,12 @@ #include #include "xerror.h" +#include "netfuncs.h" #define NUM_THREADS 8 pthread_mutex_t request_mutex = PTHREAD_MUTEX_INITIALIZER; -static const char *int2ip(unsigned int ip) -{ - static char s[16]; - sprintf(s, "%d.%d.%d.%d", ip >> 24, ip << 8 >> 24, ip << 16 >> 24, ip << 24 >> 24); - return s; -} - void *serv_request(void *data) { struct connection_cb { @@ -36,7 +30,7 @@ void *serv_request(void *data) struct connection_cb *connections = NULL; - int listenSocket = (int)data; + int listenSocket = *(int *)data; if (fcntl(listenSocket, F_SETFL, O_NONBLOCK) < 0) die("fcntl()", errno); @@ -103,7 +97,7 @@ void *serv_request(void *data) (*currentConnPtr)->dataToSend = result; (*currentConnPtr)->dataSent = 0; (*currentConnPtr)->isReading = 0; - printf("Recieving as Slave Thread id = '%d' \n", pthread_self()); + printf("Recieving as Slave Thread id = '%d' \n", (int)pthread_self()); } } else /* @@ -133,7 +127,7 @@ void *serv_request(void *data) } currentConnPtr = &((*currentConnPtr)->next); - printf("Sending as Slave Thread id = '%d' \n", pthread_self()); + printf("Sending as Slave Thread id = '%d' \n", (int)pthread_self()); } /* Проверка принадлежности дескриптора listenSocket @@ -167,36 +161,13 @@ void *serv_request(void *data) (*currentConnPtr)->isReading = 1; (*currentConnPtr)->next = 0; currentConnPtr = &((*currentConnPtr)->next); - printf("Accepting as Master Thread id = '%d' \n", pthread_self()); + printf("Accepting as Master Thread id = '%d' \n", (int)pthread_self()); } } } } } -//~ void *serv_request(void *data) -//~ { - //~ struct connection_cb - //~ { - //~ int dataSocket; - //~ char data[256]; - //~ int dataSent; - //~ int dataToSend; - //~ int isRading; - //~ struct connection_cb *next; - //~ }; -//~ - //~ struct connection_cb *connections = NULL; -//~ - //~ int listenSocket = (int)data; -//~ - //~ if(fcntl(listenSocket, F_SETFL, O_NONBLOCK) < 0) - //~ die("fcntl()", errno); -//~ - //~ - //~ -//~ } - int getServerSocket(unsigned short int port) { int listenSocket; @@ -245,7 +216,7 @@ int main(int argc, char *argv[]) descSock = getServerSocket(atoi(service)); for (k = 0; k < NUM_THREADS; k++) { - pthread_create(&p_thread[k], &attr, serv_request, (void *)descSock); + pthread_create(&p_thread[k], &attr, serv_request, (void *)&descSock); printf("Thread %d started\n", k); } diff --git a/c/masync_server/int2ip.c b/c/masync_server/int2ip.c deleted file mode 100644 index 81c4c14..0000000 --- a/c/masync_server/int2ip.c +++ /dev/null @@ -1,35 +0,0 @@ -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include - -static const char *int2ip(unsigned int ip) -{ - static char s[16]; - sprintf(s, "%d.%d.%d.%d", ip >> 24, ip << 8 >> 24, ip << 16 >> 24, ip << 24 >> 24); - return s; -} - -int main(int argc, char *argv[]) -{ - if (argc < 2) { - perror("need hex ip address"); - exit(1); - } - - unsigned int ip = 0; - sscanf(argv[1], "%X", &ip); - - printf("%s\n", int2ip(ip)); - - return 0; -} diff --git a/c/masync_server/ip2int.c b/c/masync_server/ip2int.c deleted file mode 100644 index 2f79d99..0000000 --- a/c/masync_server/ip2int.c +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include - -unsigned int ip2int(const char *s) -{ - int ip[4]; - sscanf(s, "%d.%d.%d.%d", ip, ip + 1, ip + 2, ip + 3); - return ip[0] << 24 | ip[1] << 16 | ip[2] << 8 | ip[3]; -} - -int main(int argc, char *argv[]) -{ - if (argc < 2) { - perror("need ip address string"); - exit(1); - } - - printf("%X\n", ip2int(argv[1])); - - return 0; -} diff --git a/c/masync_server/masync_server.geany b/c/masync_server/masync_server.geany new file mode 100644 index 0000000..7bb3744 --- /dev/null +++ b/c/masync_server/masync_server.geany @@ -0,0 +1,24 @@ + +[indentation] +indent_width=8 +indent_type=1 +indent_hard_tab_width=8 +detect_indent=false +indent_mode=2 + +[project] +name=masync_server +base_path=/home/kolan/dev/c/masync_server/ +description= + +[long line marker] +long_line_behaviour=1 +long_line_column=72 + +[files] +current_page=4 +FILE_NAME_0=5095;C;0;16;1;1;1;/home/kolan/dev/c/masync_server/echo-server.c;0 +FILE_NAME_1=173;C;0;16;1;1;1;/home/kolan/dev/c/masync_server/echo-client.c;0 +FILE_NAME_2=41;C;0;16;1;1;1;/home/kolan/dev/c/masync_server/netfuncs.c;0 +FILE_NAME_3=119;C;0;16;1;1;1;/home/kolan/dev/c/masync_server/netfuncs.h;0 +FILE_NAME_4=79;C;0;16;1;1;1;/home/kolan/dev/c/masync_server/xerror.c;0 diff --git a/c/masync_server/netfuncs.c b/c/masync_server/netfuncs.c new file mode 100644 index 0000000..2c01f21 --- /dev/null +++ b/c/masync_server/netfuncs.c @@ -0,0 +1,17 @@ +#include "netfuncs.h" + +#include + +unsigned int ip2int(const char *s) +{ + int ip[4]; + sscanf(s, "%d.%d.%d.%d", ip, ip + 1, ip + 2, ip + 3); + return ip[0] << 24 | ip[1] << 16 | ip[2] << 8 | ip[3]; +} + +static const char *int2ip(unsigned int ip) +{ + static char s[16]; + sprintf(s, "%d.%d.%d.%d", ip >> 24, ip << 8 >> 24, ip << 16 >> 24, ip << 24 >> 24); + return s; +} diff --git a/c/masync_server/netfuncs.h b/c/masync_server/netfuncs.h new file mode 100644 index 0000000..1c950d5 --- /dev/null +++ b/c/masync_server/netfuncs.h @@ -0,0 +1,8 @@ +#ifndef NETFUNCS_H +#define NETFUNCS_H + +unsigned int ip2int(const char *s); + +static const char *int2ip(unsigned int ip); + +#endif // NETFUNCS diff --git a/c/masync_server/sock1.c b/c/masync_server/sock1.c deleted file mode 100644 index e5f22ae..0000000 --- a/c/masync_server/sock1.c +++ /dev/null @@ -1,65 +0,0 @@ -#include -#include -#include - -//~ domain = AF_UNIX, AF_INET, AF_INET6, AF_IPX -//~ type = SOCK_STREAM, SOCK_DGRAM, SOCK_RAW -//~ int socket(int domain, int type, int protocol); - -//~ struct sockaddr { - //~ unsigned short sa_family; // Семейство адресов, AF_xxx - //~ char sa_data[14]; // 14 байтов для хранения адреса -//~ }; -//~ struct sockaddr_in { - //~ short int sin_family; // Семейство адресов - //~ unsigned short int sin_port; // Номер порта - //~ struct in_addr sin_addr; // IP-адрес - //~ unsigned char sin_zero[8]; // "Дополнение" до размера структуры sockaddr -//~ }; -//~ struct in_addr { - //~ unsigned long s_addr; -//~ }; -//~ htons, htonl, ntohs, ntohl -//~ int bind(int sockfd, struct sockaddr *addr, int addrlen); - -//~ int listen(int sockfd, int backlog); -//~ int accept(int sockfd, void *addr, int *addrlen); - -// клиент -//~ int connect(int sockfd, struct sockaddr *serv_addr, int addrlen); - -//~ int send(int sockfd, const void *msg, int len, int flags); - -// отправка буфера целиком -//~ int sendall(int s, char *buf, int len, int flags) -//~ { - //~ int total = 0; - //~ int n; -//~ - //~ while(total < len) - //~ { - //~ n = send(s, buf+total, len-total, flags); - //~ if(n == -1) { break; } - //~ total += n; - //~ } -//~ - //~ return (n==-1 ? -1 : total); -//~ } - -//~ int recv(int sockfd, void *buf, int len, int flags); - -// закрытие соединения -//~ int close(int fd); - -// запрет передачи 0 - чтения, 1 - записи, 2 - и того, и др. -//~ int shutdown(int sockfd, int how); - -int main(int argc, char *argv[]) -{ - struct a { - char aaa[256]; - }; - - printf("%lu\n", sizeof(struct a)); - return 0; -} diff --git a/c/masync_server/tmp1.c b/c/masync_server/tmp1.c deleted file mode 100644 index c2069e9..0000000 --- a/c/masync_server/tmp1.c +++ /dev/null @@ -1,25 +0,0 @@ -#include - -void f() -{ - int c = 0; - printf("c=%lu\n", (unsigned long)&c); -} - -int main(int argc, char *argv[]) -{ - //~ printf("%lu\n", sizeof(long)); - - int a = 0; - - int pid = fork(); - printf("pid=%d\n", pid); - printf("a=%lu\n", (unsigned long)&a); - - int b = 0; - printf("b=%lu\n", (unsigned long)&b); - - f(); - - return 0; -} diff --git a/c/masync_server/xerror.c b/c/masync_server/xerror.c new file mode 100644 index 0000000..04d7ea9 --- /dev/null +++ b/c/masync_server/xerror.c @@ -0,0 +1,17 @@ +#include "xerror.h" + +#include +#include +#include +#include + +void die(const char *func, int err) +{ + fprintf(stderr, "%s: %s\n", func, strerror(err)); + abort(); +} + +void bark(const char *func, int err) +{ + fprintf(stderr, "%s: %s\n", func, strerror(err)); +} diff --git a/c/masync_server/xerror.h b/c/masync_server/xerror.h new file mode 100644 index 0000000..1c1c230 --- /dev/null +++ b/c/masync_server/xerror.h @@ -0,0 +1,8 @@ +#ifndef XERROR_H +#define XERROR_H + +void die(const char *func, int err); + +void bark(const char *func, int err); + +#endif // XERORR_H