기본 리눅스 소켓 프로그래밍에서 서버가 열리지 않습니다.

njhal의 이미지

함수 하나하나 이해하고자 자필로 써가며 공부하다
기본적인 소켓 프로그램소스를 짜보았습니다.
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;
}
//--------------클라이언트-------------

bookgekgom의 이미지

iptables 설뎡은여?

---------------------------------------------------------------------------------------------------------------
루비 온 레일즈로 만들고 있는 홈페이지 입니다.

http://jihwankim.co.nr

여러 프로그램 소스들이 있습니다.

필요하신분은 받아가세요.

Fe.head의 이미지

char *buf[MAX_BUF];
 
buf[0]=(char*)malloc(sizeof(buf));
*buf="Hello socket!!";
...
send(sockfd,buf,MAX_BUF,0);

위부분 좀 이상하군요.

char buf[MAX_BUF] = "Hello socket!!";
...
send(sockfd,buf,MAX_BUF,0);

이런식으로 바꾸어야 할듯.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

ssif의 이미지

8080포트는 톰켓이 사용하는 포트로 알고 있습니다.
톰켓이 설치되어 있는지 확인 해보시고, 설치되어 있다면 다른포트로 바꾸어 주시는것을 추천합니다.

봄들판에서다

봄들판에서다

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.