+)에러 찾앗다 ,, 하 .. 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 |