Describe /램 here
2012/3/30 - 대 램 만들 ¶
명 ¶
exit를 면 료.
문 ¶
exit를 , 료 대 는 문.
client exit를 , " 료." 는 메 바 . server 무 면 client " 료." 됩.
리 server는 료 받 메를 무 .
server exit를 , " 료." 는 메 바 . client 무 면 server " 료." 됩.
리 client는 료 받 메를 무 .
client exit를 , " 료." 는 메 바 . server 무 면 client " 료." 됩.
리 server는 료 받 메를 무 .
server exit를 , " 료." 는 메 바 . client 무 면 server " 료." 됩.
리 client는 료 받 메를 무 .
무 루 문는 . - 2012. 4. 3
¶
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<arpa/inet.h> #include<sys/types.h> #include<sys/socket.h> #include<pthread.h> #define SIZE 1024 int client_socket, server_socket; int client_addr_size, flag = 0; char buff_snd[SIZE + 5], buff_rcv[SIZE + 5]; void* snd(void *data){ while(!flag){ gets(buff_rcv); if(strcmp(buff_rcv, "exit") == 0)flag = 1; else{ sprintf( buff_snd, "%d : %s", strlen( buff_rcv), buff_rcv); send(client_socket, buff_snd, strlen(buff_snd)+1, 0); } } } void *rcv(void *data){ int temp; while(!flag){ if(recv(client_socket, buff_rcv, SIZE, 0) <= 0)continue; else{ if(strcmp(buff_rcv, "exit") == 0)flag = 1; else{ printf( "receive: %s\n", buff_rcv); sprintf( buff_snd, "%d : %s", strlen( buff_rcv), buff_rcv); } } } } int main(void){ int option = 1; pthread_t pthread[2]; struct sockaddr_in server_addr, client_addr; server_socket = socket(PF_INET, SOCK_STREAM, 0); setsockopt(server_socket, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option)); if (-1 == server_socket) { printf( "server socket "); exit( 1) ; } memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(4000); server_addr.sin_addr.s_addr = htonl(INADDR_ANY); if(bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr))){ printf( "bind() 러\n"); exit( 1); } if(listen(server_socket, 5) == -1){ printf( "대 모 \n"); exit( 1); } client_addr_size = sizeof(client_addr); client_socket = accept(server_socket, (struct sockaddr*)&client_addr, &client_addr_size); if(client_socket == -1){ printf( " \n"); exit(1); } pthread_create(&pthread[0], NULL, snd, (void *)NULL); pthread_create(&pthread[1], NULL, rcv, (void *)NULL); int status; pthread_join(pthread[0], (void**)&status); pthread_join(pthread[1], (void**)&status); printf(" 료.\n"); close(server_socket); return 0; }
¶
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/types.h> #include <sys/socket.h> #define SIZE 1024 int flag = 0; char buff_snd[SIZE + 5], buff_rcv[SIZE + 5]; int client_socket; void* snd(void *data){ while(!flag){ gets(buff_rcv); if(strcmp(buff_rcv, "exit") == 0)flag = 1; else{ sprintf( buff_snd, "%d : %s", strlen( buff_rcv), buff_rcv); send(client_socket, buff_snd, strlen(buff_snd)+1, 0); } } } void *rcv(void *data){ int temp; while(!flag){ if(recv(client_socket, buff_rcv, SIZE, 0) <= 0)continue; else{ if(strcmp(buff_rcv, "exit") == 0)flag = 1; else{ printf( "receive: %s\n", buff_rcv); sprintf( buff_snd, "%d : %s", strlen( buff_rcv), buff_rcv); } } } } int main( int argc, char **argv) { pthread_t pthread[2]; struct sockaddr_in server_addr; client_socket = socket( PF_INET, SOCK_STREAM, 0); if( -1 == client_socket) { printf( "socket \n"); exit( 1); } memset( &server_addr, 0, sizeof( server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons( 4000); server_addr.sin_addr.s_addr= inet_addr( "127.0.0.1"); if( -1 == connect( client_socket, (struct sockaddr*)&server_addr, sizeof( server_addr) ) ) { printf( " \n"); exit( 1); } pthread_create(&pthread[0], NULL, snd, (void *)NULL); pthread_create(&pthread[1], NULL, rcv, (void *)NULL); int status; pthread_join(pthread[0], (void**)&status); pthread_join(pthread[1], (void**)&status); printf(" 료.\n"); close(client_socket); return 0; }
2012/4/3 - 멀 램 만들 ¶
명 ¶
문 ¶
램 면 들 문 Pthread_join . 를 면 Join 디 놔를 모르 번 빼놓 보 램 동 .( 물 )
만 join 면 메모리 . 는 join 데 떻 를 모르.
만 join 면 메모리 . 는 join 데 떻 를 모르.
- listen while문 무 루를 돌 므 . 리 main return 료 모 료므 main 료는 는 따 리를 됩. -
- http://www.google.co.kr/url?sa=t&source=web&cd=5&ved=0CEkQFjAE&url=http://211.221.225.175/~comsys/NP_PDF/chapter9.pdf&ei=B1B6T-XQLsaNiAfp7ozmAg&usg=AFQjCNGSvHjDhJuPzKXNM753wAi0WINORQ
문 ¶
리 .
¶
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<arpa/inet.h> #include<sys/types.h> #include<sys/socket.h> #include<pthread.h> #define SIZE 1024 #define N 40 int client_socket[N+5], check[N+5], server_socket; int client_addr_size, flag = 0; char buff_snd[SIZE + 5], buff_rcv[SIZE + 5]; void *rcv(void *data){ int i; int temp = (int *)data; while(1){ if(recv(client_socket[temp], buff_rcv, SIZE, 0) <= 0)continue; else{ if(strcmp(buff_rcv, "exit") == 0){ printf(" 료.\n"); break; } printf( "receive: %s\n", buff_rcv); sprintf( buff_snd, "%d : %s", strlen( buff_rcv), buff_rcv); for(i = 1; i<=N; i++){ if(check[i])send(client_socket[i], buff_snd, strlen(buff_snd)+1, 0); } } } close(client_socket[temp]); client_socket[temp] = check[temp] = 0; } int main(void){ int option = 1; pthread_t pthread[N+5]; struct sockaddr_in server_addr, client_addr; int i; server_socket = socket(PF_INET, SOCK_STREAM, 0); setsockopt(server_socket, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option)); if (-1 == server_socket) { printf( "server socket "); exit( 1) ; } memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(4000); server_addr.sin_addr.s_addr = htonl(INADDR_ANY); if(bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr))){ printf( "bind() 러\n"); exit( 1); } while(1){ if(listen(server_socket, 5) == -1){ printf( "대 모 \n"); exit( 1); } for(i = 1; i<=N; i++){ if(!check[i]){ client_addr_size = sizeof(client_addr); client_socket[i] = accept(server_socket, (struct sockaddr*)&client_addr, &client_addr_size); if(client_socket[i] == -1){ printf( " \n"); exit( 1); } check[i] = 1; pthread_create(&pthread[i], NULL, rcv, (void *)i); //int status; //pthread_join(pthread[i], (void **)&status); break; } } } printf(" 료.\n"); close(server_socket); exit(1); return 0; }
¶
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/types.h> #include <sys/socket.h> #include <pthread.h> #define SIZE 1024 int flag1 = 0, flag2 = 0; char buff_snd[SIZE + 5], buff_rcv[SIZE + 5]; int client_socket; void* snd(void *data){ while(!flag1){ while(flag2); gets(buff_rcv); send(client_socket, buff_rcv, strlen(buff_rcv)+1, 0); if(strcmp(buff_rcv, "exit") == 0){ flag1 = 1; printf(" 료.\n"); pthread_exit((void *)NULL); } flag2 = 1; } } void *rcv(void *data){ int temp; while(!flag1){ if(recv(client_socket, buff_rcv, SIZE, 0) <= 0)continue; else{ printf( "receive: %s\n", buff_rcv); sprintf( buff_snd, "%d : %s", strlen( buff_rcv), buff_rcv); flag2 = 0; } } } int main( int argc, char **argv) { pthread_t pthread[2]; struct sockaddr_in server_addr; client_socket = socket( PF_INET, SOCK_STREAM, 0); if( -1 == client_socket) { printf( "socket \n"); exit( 1); } memset( &server_addr, 0, sizeof( server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons( 4000); server_addr.sin_addr.s_addr= inet_addr( "127.0.0.1"); if( -1 == connect( client_socket, (struct sockaddr*)&server_addr, sizeof( server_addr) ) ) { printf( " \n"); exit( 1); } pthread_create(&pthread[0], NULL, snd, (void *)NULL); pthread_create(&pthread[1], NULL, rcv, (void *)NULL); int status; pthread_join(pthread[0], (void**)&status); pthread_join(pthread[1], (void**)&status); close(client_socket); exit(1); return 0; }