기본 리눅스 소켓 프로그래밍에서 서버가 열리지 않습니다.
함수 하나하나 이해하고자 자필로 써가며 공부하다
기본적인 소켓 프로그램소스를 짜보았습니다.
kldp wiki에서 참고하여 열심히 만들어서 코딩을 해보았습니다.
서버에 포트가 열리지않아 여러가지 해보았지만
아직까지 많은 가르침을 받아야 할 저로써는 오류해결방법을 찾을 방도가 없더군요.
서버를 키고 netstat을 하면 8080포트가 열려있지 않습니다.
그게문제라는걸 인식은 하고있지만 어디서 잘못된건지 잘모르겠습니다.
부디 따끔한 지적해주시면 감사하겠습니다.
서버 클라이언트모두 인크루드한 헤더입니다.
sys.types.h
sys/socket.h
string.h
netinet/in.h
stdio.h
stdlib.h
//--------------서버-------------
#include
#include
#include
#include
#include
#include
#define MAX_BUF 1024
#define BACK_LOG 5
#define HOST_IP "127.0.0.1"
#define HOST_PORT 8080
int main(void){
struct sockaddr_in sin,csin;
int sockfd,csockfd;
char *buf[MAX_BUF];
buf[0]=(char*)malloc(sizeof(buf));
printf("Socket Program Start!!\n");
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0){
perror("0: socket error");
exit(0);
}
printf("socket() complete\n");
sin.sin_family=AF_INET;
sin.sin_port=htons(HOST_PORT);
sin.sin_addr.s_addr=inet_addr(HOST_IP);
memset(&(sin.sin_zero),0,sizeof(&(sin.sin_zero)));
if(bind(sockfd,(struct sockaddr *)&sin,sizeof(struct sockaddr))<0){
perror("1: bind error");
exit(0);
}
printf("bind() complete\n");
if(listen(sockfd,BACK_LOG)<0){
perror("2: listen error");
exit(0);
}
printf("listen() complete");
memset(buf,0x00,sizeof(buf));
while(1){
csockfd=accept(sockfd,(struct sockaddr *)&csin,(socklen_t *)&csin);
recv(csockfd,buf,MAX_BUF,0);
printf("%s",getpeername(sockfd,(struct sockaddr *)&csin,(socklen_t *)&csin));
printf("%s\n",buf);
close(csockfd);
memset(buf,0x00,sizeof(buf));
}
printf("Socket Program End!!\n");
return 0;
}
//--------------서버-------------
//--------------클라이언트-------------
#include
#include
#include
#include
#include
#include
#define MAX_BUF 1024
#define BACK_LOG 5
#define DEST_IP "127.0.0.1"
#define DEST_PORT 8080
int main(void){
struct sockaddr_in dest_sin;
int sockfd;
char *buf[MAX_BUF];
buf[0]=(char*)malloc(sizeof(buf));
*buf="Hello socket!!";
printf("Socket Program Start!!\n");
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0){
perror("0: socket error");
exit(0);
}
printf("socket() complete\n");
dest_sin.sin_family=AF_INET;
dest_sin.sin_port=htons(DEST_PORT);
dest_sin.sin_addr.s_addr=inet_addr(DEST_IP);
memset(&(dest_sin.sin_zero),0,sizeof(&(dest_sin.sin_zero)));
connect(sockfd,(struct sockaddr *)&dest_sin,sizeof(struct sockaddr));
send(sockfd,buf,MAX_BUF,0);
printf("end");
return 0;
}
//--------------클라이언트-------------
뎡말?
iptables 설뎡은여?
---------------------------------------------------------------------------------------------------------------
루비 온 레일즈로 만들고 있는 홈페이지 입니다.
http://jihwankim.co.nr
여러 프로그램 소스들이 있습니다.
필요하신분은 받아가세요.
char
위부분 좀 이상하군요.
이런식으로 바꾸어야 할듯.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
8080포트는 톰켓이
8080포트는 톰켓이 사용하는 포트로 알고 있습니다.
톰켓이 설치되어 있는지 확인 해보시고, 설치되어 있다면 다른포트로 바꾸어 주시는것을 추천합니다.
봄들판에서다
봄들판에서다
댓글 달기