반응형

+)에러 찾앗다 ,, 하 .. BUFSIZ 를 BUFSIZE로 쓰지를 않나 .. )를 하나 더써놓지를 않나 .. 

[gate@localhost gate]$ cat hello_ext_server.c

#include <stdio.h>

#include <netinet/in.h>

#include <sys/socket.h>


#define PORT 9080


char buffer[BUFSIZ]= "hello, world";

char rBuffer[BUFSIZ];


main(){


int c_socket,s_socket;

struct sockaddr_in s_addr, c_addr;

int len;

int n,i;


char *temp;

int length;


s_socket= socket(PF_INET,SOCK_STREAM,0);


memset(&s_addr,0,sizeof(s_addr));

s_addr.sin_addr.s_addr = htonl(INADDR_ANY);

s_addr.sin_family =AF_INET;

s_addr.sin_port=htons(PORT);


if(bind(s_socket,(struct sockaddr *) &s_addr, sizeof(s_addr))==-1) {

printf("Can not Bind\n");

return -1;

}


if(listen(s_socket,5)==-1){

printf("listen Fail\n");

return -1;

}


while(1){

len=sizeof(c_addr);

c_socket = accept(s_socket, (struct sockaddr *) &c_addr, &len);

length =0;

temp = rBuffer;

while((n=read(c_socket, temp, 1))>0){

if(*temp == '\r') continue;

if(*temp == '\n') break;

if(*temp == '\0') break;


if(length == BUFSIZ) break;

temp++, length++;

}


rBuffer[length] = '\0';


if(!strcmp(rBuffer, "print")){

n=strlen(buffer);

write(c_socket,buffer,n);

}

close(c_socket);

}

close(s_socket);

}


+)TCP/IP 통신함수 사용 순서 (자세한 내용 : http://forum.falinux.com/zbxe/index.php?document_srl=438082&mid=C_LIB)

+)텔넷에서 커맨드를 때릴때 print 라는걸 쳣다고가정하면 보통 5바이트가 들어갈거라 생각하는데 그렇지 않음;

0x0d(CR;캐리지 리턴), 0x0a(LF ; 라인피드)가 추가됨 >나중에 실수할거같다 ㅡㅡ ;  ) 

반응형

'과거의 컴퓨터 공부 > 소켓 프로그래밍' 카테고리의 다른 글

ls_server.c  (0) 2014.08.31
hello_ext_client.c  (0) 2014.08.29
port 종류  (0) 2014.08.28
Hello client  (0) 2014.08.28
Hello_server.c  (0) 2014.08.27
,