티스토리 뷰
/* hello_world_server.c */ /* 아래 소스는 클라이언트로부터 연결 요청이 들어오면 이를 수락하여 서버 연결 소켓을 생성하고 클라이언트 소켓으로 Hello World 메시지를 보내고 연결을 종료하는 소스 */ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<arpa/inet.h> #include<sys/types.h> #include<sys socket.h> void error_msg(char *message) ; int main(int argc, char ** argv) { int serv_sock ; int conn_sock ; struct sockaddr_in serv_addr ; struct sockaddr_in conn_addr ; int addr_len ; char message[] = "Hello World\n" ; if ( argc != 3 ) { printf("Usage : %s <server ip=""> <port>\n", argv[0] ) ; exit(1) ; } serv_sock = socket(PF_INET, SOCK_STREAM, 0); if ( serv_sock == -1 ) error_msg ("socket() error!!!") ; memset(&serv_addr, 0, sizeof(serv_addr)) ; serv_addr.sin_family = AF_INET ; //serv_addr.sin_addr.s_addr = htonl(INADDR_ANY) ; serv_addr.sin_addr.s_addr = inet_addr(argv[1]) ; serv_addr.sin_port = htons(atoi(argv[2])) ; if ( bind(serv_sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == -1) error_msg("bind() error") ; if ( listen(serv_sock, 5) == -1) error_msg ("listen() error!!!") ; addr_len = sizeof(conn_addr) ; conn_sock = accept(serv_sock, (struct sockaddr *)&conn_addr, &addr_len) ; if ( conn_sock == -1 ) error_msg("accept() error") ; write(conn_sock, message, sizeof(message)) ; close(conn_sock); return 0 ; } void error_msg(char *message) { fputs(message, stderr) ; fputc('\n',stderr); exit; }
/* hello_world_client.c */
/* 아래 소스는 서버에 연결하여 서버 프로그램이 송신한 메시지를 수신하여 출력하고 자신의 클라이언트 소켓을 닫는 소스 */
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<sys/socket.h>
void error_msg(char *message);
int main(int argc, char **argv)
{
int cli_sock ;
struct sockaddr_in serv_addr ;
char message[30] ;
int str_len ;
if ( argc != 3 )
{
printf("Usage : %s <IP addr> <Port>\n", argv[0]) ;
exit(1);
}
cli_sock = socket ( PF_INET, SOCK_STREAM, 0 );
if ( cli_sock == -1 )
error_msg ("socket() error!!!") ;
memset ( &serv_addr, 0, sizeof(serv_addr) ) ;
serv_addr.sin_family = AF_INET ;
serv_addr.sin_addr.s_addr = inet_addr(argv[1]) ;
serv_addr.sin_port = htons(atoi(argv[2])) ;
if ( connect(cli_sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == -1)
error_msg ("connect() error") ;
str_len = read(cli_sock, message, sizeof(message) ) ;
if ( str_len == -1 )
error_msg ( "read() error" ) ;
message [ str_len ] = 0 ;
printf("Message from server : %s\n", message ) ;
close ( cli_sock ) ;
return ( 0 ) ;
}
void error_msg ( char * message )
{
fputs ( message, stderr ) ;
fputc ( '\n' , stderr ) ;
exit;
}
'IT 이야기 > 프로그래밍' 카테고리의 다른 글
[Javascript] Window open() 함수 (0) | 2010.04.29 |
---|---|
getbyhostaddr() 함수 예제 소스 (0) | 2010.04.27 |
fork test 소스2 (0) | 2010.04.27 |
strcmp(), stricmp(), strncmp(), strnicmp() (0) | 2010.04.27 |
fork test 소스1 (0) | 2010.04.27 |
다중 프로세스 기반의 동시 처리 에코 서버/클라이언트 (echo_multi_server.c/echo_multi_client.c) (0) | 2010.04.27 |
[문자열 함수] strcat(), strncat() 함수 (0) | 2010.04.26 |
getsockopt()를 이용한 버퍼 크기 확인 예제 프로그램 (0) | 2010.04.26 |
gethostbyname() 예제 (0) | 2010.04.26 |
파일/소켓 디스크립터(file/socket descriptor) 생성 예제 (0) | 2010.04.26 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- W3Schools Online Web Tutorials
- 구차니의 잡동사니 모음
- [IT]블로거팁닷컴
- 비앤아이님의 블로그
- Blog Suspect
- 즐거운하루 blog
- zinicap의 검색엔진 마케팅(SEM)
- 머니야머니야님의 블로그
- [Friend] AtinStory
- [기타배우기]해브원 박스
- [웹표준] SINDB.com
- 해커 C 이야기
- [애드센스] 길라잡이
- 정순봉의 IT SCHOOL
- 씨디맨의 컴퓨터이야기
- 2proo Life Story
- 못된준코의 세상리뷰
- [IT강좌] 정보문화사
- IN 대전
- 에우르트는 나쁜남자 -_-
- 씬의 싱크탱크
- 엔돌슨의 IT이야기
- 진이늘이
- 'Cooltime'의 블로그
- 후이의 Tistory
- Soulstorage
- 앤드&엔드의 블로그
- June Blog
- 노지의 소박한 이야기
- gbWorld
- 인터넷 속 나의 생각
- HarshNix
- ART of WEB
- 녹두장군 - 상상을 현실로
TAG
- 리뷰
- 강좌
- MBTI 테스트
- 강의
- php
- 효과음
- MBTI
- C언어 소스
- C
- 인터넷
- 예제 소스
- JavaScript
- 안드로이드 어플
- It
- 소스
- 프로그래밍
- 안드로이드
- MBTI 강좌
- MBTI 자료
- 인터넷 익스플로러
- MBTI 검사
- 안드로이드 어플 추천
- 스마트폰
- C언어 문제
- 성공
- HTML
- C언어
- 프로그래밍 문제
- 소스코드
- 모토로이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함