'2019/05'에 해당되는 글 63건

  1. 2019.05.24 cpp stringstream << 연산자
  2. 2019.05.24 리눅스 UDP 소켓
  3. 2019.05.24 while(-1) 이 될까?
  4. 2019.05.24 리눅스 TCP 소켓
  5. 2019.05.23 쏘카 처음 써봄 (4)
  6. 2019.05.23 개복이 구름다리 건넘 (2)
  7. 2019.05.22 mssql sqlcmd (4)
  8. 2019.05.22 R rJava 설정
  9. 2019.05.21 wine ie
  10. 2019.05.21 wine 한글 폰트
Programming/C++ STL2019.05.24 15:43

어떻게 보면.. scanf를 좀 편리하게 해주는 cpp용 연산자라고 보면 되려나?

 

[링크 : http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/]

 

string str_sensor_data(mesg);
stringstream stream(str_sensor_data);
for(int i=0;i<5;i++){

    stream >> sensor_data[i]; 

}

[링크 : http://youngmok.com/udp-server-c-class-listening-thread/]

'Programming > C++ STL' 카테고리의 다른 글

cpp stringstream << 연산자  (0) 2019.05.24
c++ 함수 인자 기본값  (0) 2017.11.08
cpp string compare 와 ==  (0) 2017.01.31
cpp this  (0) 2016.07.18
class 기본 접근제한자  (0) 2016.07.18
cpp 매크로 __PRETTY_FUNCTION__  (0) 2016.07.18
Posted by 구차니

댓글을 달아 주세요

Linux API/network2019.05.24 14:11

sento() 에 인자를 좀 바꾸어서 명령어줄 인자를 받으면 재미있긴 한데..

TCP 처럼 클라이언트 별로 accept 해주는 구조가 아니라

개별 클라이언트를 어떻게 구분해야 하지? 라고 고민중

 

server

// Server side implementation of UDP client-server model
#include 
#include 
#include 
#include 
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>

#define PORT     8080
#define MAXLINE 1024

// Driver code
int main() {
        int sockfd;
        char buffer[MAXLINE];
        char *hello = "Hello from server";
        struct sockaddr_in servaddr, cliaddr;

        // Creating socket file descriptor
        if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) {
                perror("socket creation failed");
                exit(EXIT_FAILURE);
        }

        memset(&servaddr, 0, sizeof(servaddr));
        memset(&cliaddr, 0, sizeof(cliaddr));

        // Filling server information
        servaddr.sin_family = AF_INET; // IPv4
        servaddr.sin_addr.s_addr = INADDR_ANY;
        servaddr.sin_port = htons(PORT);

        // Bind the socket with the server address
        if ( bind(sockfd, (const struct sockaddr *)&servaddr,
                        sizeof(servaddr)) < 0 )
        {
                perror("bind failed");
                exit(EXIT_FAILURE);
        }

        while(1)
        {
        int len, n;
        n = recvfrom(sockfd, (char *)buffer, MAXLINE,
                                MSG_WAITALL, ( struct sockaddr *) &cliaddr,
                                &len);
        buffer[n] = '\0';
        printf("Client : %s\n", buffer);
//      sendto(sockfd, (const char *)hello, strlen(hello),
        sendto(sockfd, (const char *)buffer, strlen(buffer),
                MSG_CONFIRM, (const struct sockaddr *) &cliaddr,
                        len);
        printf("Hello message sent.\n");
        }
        return 0;
}

 

client

// Client side implementation of UDP client-server model
#include 
#include 
#include 
#include 
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>

#define PORT     8080
#define MAXLINE 1024

// Driver code
int main(int argc, char **argv) {
        int sockfd;
        char buffer[MAXLINE];
        char *hello = "Hello from client";
        struct sockaddr_in       servaddr;

        // Creating socket file descriptor
        if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) {
                perror("socket creation failed");
                exit(EXIT_FAILURE);
        }

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

        // Filling server information
        servaddr.sin_family = AF_INET;
        servaddr.sin_port = htons(PORT);
        servaddr.sin_addr.s_addr = INADDR_ANY;

        int n, len;

//      sendto(sockfd, (const char *)hello, strlen(hello),
        sendto(sockfd, (const char *)argv[1], strlen(argv[1]),
                MSG_CONFIRM, (const struct sockaddr *) &servaddr,
                        sizeof(servaddr));
        printf("Hello message sent.\n");

        n = recvfrom(sockfd, (char *)buffer, MAXLINE,
                                MSG_WAITALL, (struct sockaddr *) &servaddr,
                                &len);
        buffer[n] = '\0';
        printf("Server : %s\n", buffer);

        close(sockfd);
        return 0;
}

 

[링크 : https://www.geeksforgeeks.org/udp-server-client-implementation-c/]

[링크 : https://www.geeksforgeeks.org/tcp-and-udp-server-using-select/]

 

+

[링크 : https://scrapsquare.com/notes/udp-length]

[링크 : https://en.wikipedia.org/wiki/User_Datagram_Protocol]

 

+

class (cpp) 기반 UDP socket 예제

[링크 : http://youngmok.com/udp-server-c-class-listening-thread/]

'Linux API > network' 카테고리의 다른 글

리눅스 UDP 소켓  (0) 2019.05.24
리눅스 TCP 소켓  (0) 2019.05.24
linux udp cpp example  (0) 2019.05.16
linux socket 관련  (0) 2015.01.22
멀티캐스트 되는지 여부 확인  (0) 2014.11.21
net tools 소스코드  (0) 2011.11.07
Posted by 구차니

댓글을 달아 주세요

Programming/C Win32 MFC2019.05.24 12:18

코드 분석하다 보니 어떻게 작동할지 몰라서 해보니

헐.. while(0) 이냐 !0 이냐 정도로 밖에 작동하지 않네

예제 소스가 이상한 조건문이 되어버렸네...

 

client_sock에 -1이 들어와도 while은 중단되지 않고 0일때만 중단되는데

그러면 if(client_sock < 0)은 <=0이 아니라 들어갈 방법이 없네?

while( (client_sock = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)) )
{
puts("Connection accepted");

pthread_t sniffer_thread;
new_sock = malloc(1);
*new_sock = client_sock;

if( pthread_create( &sniffer_thread , NULL ,  connection_handler , (void*) new_sock) < 0)
{
perror("could not create thread");
return 1;
}

//Now join the thread , so that we dont terminate before the thread
//pthread_join( sniffer_thread , NULL);
puts("Handler assigned");
}

if (client_sock < 0)
{
perror("accept failed");
return 1;
}

[링크 : https://www.binarytides.com/server-client-example-c-sockets-linux/]

'Programming > C Win32 MFC' 카테고리의 다른 글

while(-1) 이 될까?  (0) 2019.05.24
c언어용 JSON 라이브러리 목록  (0) 2018.10.23
uuid in c  (0) 2018.10.22
엔디안 급 멘붕..  (0) 2018.05.29
const char *과 char * const 차이  (0) 2018.01.31
소스 코드 포맷 적용하기  (0) 2018.01.08
Posted by 구차니

댓글을 달아 주세요

Linux API/network2019.05.24 11:01

개념만 알지 써보진 않은 녀석이라.. 후 공부 해야겠네 ㅠㅠ

역시 공부는 돈받고 해야 제맛

 

테스트 삼아 SOCK_STREAM을 SOCK_DGRAM 으로 바꾸었는데

accept 하는 부분이 달라져야 하는지 정상작동을 하진 않는다.

(댓글들 보면 메모리 누수라던가 여러가지 문제가 넘치는 소스인듯)

그래도 서버 하나 실행하고 클라이언트 여러개 실행해도 각각 응답이 다르게 오는것 봐서는

내가 의도하는 그런 정상적인(!) 서버로 구동되는 건 맞는 듯 하니 일단 패스

 

server

/*
        C socket server example, handles multiple clients using threads
*/

#include
#include      //strlen
#include      //strlen
#include<sys/socket.h>
#include<arpa/inet.h>   //inet_addr
#include      //write
#include //for threading , link with lpthread

//the thread function
void *connection_handler(void *);

int main(int argc , char *argv[])
{
        int socket_desc , client_sock , c , *new_sock;
        struct sockaddr_in server , client;

        //Create socket
        socket_desc = socket(AF_INET , SOCK_STREAM , 0);
        if (socket_desc == -1)
        {
                printf("Could not create socket");
        }
        puts("Socket created");

        //Prepare the sockaddr_in structure
        server.sin_family = AF_INET;
        server.sin_addr.s_addr = INADDR_ANY;
        server.sin_port = htons( 8888 );

        //Bind
        if( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0)
        {
                //print the error message
                perror("bind failed. Error");
                return 1;
        }
        puts("bind done");

        //Listen
        listen(socket_desc , 3);

        //Accept and incoming connection
        puts("Waiting for incoming connections...");
        c = sizeof(struct sockaddr_in);


        //Accept and incoming connection
        puts("Waiting for incoming connections...");
        c = sizeof(struct sockaddr_in);
        while( (client_sock = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)) )
        {
                puts("Connection accepted");

                pthread_t sniffer_thread;
                new_sock = malloc(1);
                *new_sock = client_sock;

                if( pthread_create( &sniffer_thread , NULL ,  connection_handler , (void*) new_sock) < 0)
                {
                        perror("could not create thread");
                        return 1;
                }

                //Now join the thread , so that we dont terminate before the thread
                //pthread_join( sniffer_thread , NULL);
                puts("Handler assigned");
        }

        if (client_sock < 0)
        {
                perror("accept failed");
                return 1;
        }

        return 0;
}

/*
 * This will handle connection for each client
 * */
void *connection_handler(void *socket_desc)
{
        //Get the socket descriptor
        int sock = *(int*)socket_desc;
        int read_size;
        char *message , client_message[2000];

        //Send some messages to the client
        message = "Greetings! I am your connection handler\n";
        write(sock , message , strlen(message));

        message = "Now type something and i shall repeat what you type \n";
        write(sock , message , strlen(message));

        //Receive a message from client
        while( (read_size = recv(sock , client_message , 2000 , 0)) > 0 )
        {
                //Send the message back to client
                write(sock , client_message , strlen(client_message));
        }

        if(read_size == 0)
        {
                puts("Client disconnected");
                fflush(stdout);
        }
        else if(read_size == -1)
        {
                perror("recv failed");
        }

        //Free the socket pointer
        free(socket_desc);

        return 0;
}

client

/*
        C ECHO client example using sockets
*/
#include       //printf
#include      //strlen
#include<sys/socket.h>  //socket
#include<arpa/inet.h>   //inet_addr
#include 

int main(int argc , char *argv[])
{
        int sock;
        struct sockaddr_in server;
        char message[1000] , server_reply[2000];

        //Create socket
        sock = socket(AF_INET , SOCK_STREAM , 0);
        if (sock == -1)
        {
                printf("Could not create socket");
        }
        puts("Socket created");

        server.sin_addr.s_addr = inet_addr("127.0.0.1");
        server.sin_family = AF_INET;
        server.sin_port = htons( 8888 );

        //Connect to remote server
        if (connect(sock , (struct sockaddr *)&server , sizeof(server)) < 0)
        {
                perror("connect failed. Error");
                return 1;
        }

        puts("Connected\n");

        //keep communicating with server
        while(1)
        {
                printf("Enter message : ");
                scanf("%s" , message);

                //Send some data
                if( send(sock , message , strlen(message) , 0) < 0)
                {
                        puts("Send failed");
                        return 1;
                }

                //Receive a reply from the server
                if( recv(sock , server_reply , 2000 , 0) < 0)
                {
                        puts("recv failed");
                        break;
                }

                puts("Server reply :");
                puts(server_reply);
        }

        close(sock);
        return 0;
}

[링크 : https://www.geeksforgeeks.org/...-handling-multiple-clients-on-server-without-multi-threading/]

[링크 : https://stackoverflow.com/questions/31461492/client-server-multiple-connections-in-c]

 

1. Create socket
2. Bind to address and port
3. Put in listening mode
4. Accept connections and process there after.

[링크 : https://www.binarytides.com/server-client-example-c-sockets-linux/]

 

 

+

man page 보는데 특이하게 2번과 3번으로 두개가 있네?

설명 자체는 둘이 좀 달라서 어느게 어떤 차이가 있는지 좀 애매하다.

#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

#define _GNU_SOURCE
            /* See feature_test_macros(7) */

#include <sys/socket.h>

int accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags);

[링크 : https://linux.die.net/man/2/accept]

 

#include <sys/socket.h>

int accept(int socket, struct sockaddr *restrict address, socklen_t *restrict address_len);

[링크 : https://linux.die.net/man/3/accept]

 

 

'Linux API > network' 카테고리의 다른 글

리눅스 UDP 소켓  (0) 2019.05.24
리눅스 TCP 소켓  (0) 2019.05.24
linux udp cpp example  (0) 2019.05.16
linux socket 관련  (0) 2015.01.22
멀티캐스트 되는지 여부 확인  (0) 2014.11.21
net tools 소스코드  (0) 2011.11.07
Posted by 구차니

댓글을 달아 주세요

처음 가입하면 3시간 무료권을 주는데

그렇게 해서 왕복 56km 3시간 30분 정도만에 돌아오니(5시간 대여)

 

13000 + 11000 정도 나온듯

싼거 같으면서도 그리 안싼거 같기도 하고

 

 

그나저나 쏘카라는 특성상 차 옆을 보니 엄청나게 긁히고 난리네

차량 사진 올리라는데 한장 밖에 못 올려서

범퍼쪽만 찍었는데 뒤에도 찍고 그럴걸.. ㅠㅠ

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

쏘카 처음 써봄  (4) 2019.05.23
개복이 구름다리 건넘  (2) 2019.05.23
공사 빡세다..  (2) 2019.05.19
피곤쓰  (2) 2019.04.28
분노쓰  (0) 2019.04.27
피곤  (0) 2019.04.20
Posted by 구차니

댓글을 달아 주세요

  1. 2시간에 24,000원
    기름값 포함 총 지출비용이 저렇다는 거죠? 흠~

    2019.05.24 17:05 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 실제 이동 시간은 왕복 1시간 20분 정도 될거 같은데 이동 거리로 환산해서 사용료 붙은게 뒤에 1.1만이구요

      차 빌리는 비용(+보험료 + 쿠폰 적용 3시간 무료)이 13000 원이에요
      첫 가입 3시간 무료 적용했는데도 저정도면 생각외로 엄청 비싼다는 느낌이에요.
      그래도 차 하나를 빌리는거니 화물이 좀 있으면 모를까 그게 아님 택시가 그래도 쌀거 같긴해요

      2019.05.24 18:03 신고 [ ADDR : EDIT/ DEL ]
  2. 흠.. 쏘카 가격 정책이 엄청 어려운 거 같아요.
    ㅡㅡ;;;;;

    2019.05.24 18:59 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 어떻게 보면.. 선불 + 후불 복합 요금제라 빌리기만 하고 와.. 싸다 싶은데 또 그게 아니더라구요.. ㅠㅠ

      2019.05.24 20:55 신고 [ ADDR : EDIT/ DEL ]

나쁜년 내 얼굴이나 보고 가지 그걸 못 참고 가냐...

 

 

+

2019.05.24

어제 화장을 치뤄주고 옴

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

쏘카 처음 써봄  (4) 2019.05.23
개복이 구름다리 건넘  (2) 2019.05.23
공사 빡세다..  (2) 2019.05.19
피곤쓰  (2) 2019.04.28
분노쓰  (0) 2019.04.27
피곤  (0) 2019.04.20
Posted by 구차니

댓글을 달아 주세요

  1. 아~ ㅜㅜ

    2019.05.24 10:48 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 머 14살이라 오래 살았긴 하죠.
      가끔 보이는 17살 20살 멍멍이들에 비하면 빨리 떠나긴 했지만요 ㅠㅠ

      2019.05.24 11:03 신고 [ ADDR : EDIT/ DEL ]

Microsoft/mssql2019.05.22 15:32

show databases;

select name from sys.databases
go

[링크 : https://stackoverflow.com/questions/2087902/sqlserver-08-query-to-list-all-databases-in-an-instance]

 

 

use table_name

use table_name;

 

show tables;

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES

[링크 : https://chartio.com/resources/tutorials/sql-server-list-tables-how-to-show-all-tables/]

'Microsoft > mssql' 카테고리의 다른 글

mssql sqlcmd  (4) 2019.05.22
Posted by 구차니

댓글을 달아 주세요

  1. 앗! 예전에 종종 보던 명령어들이네요. ㅋ

    2019.05.27 14:41 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • mysql이 아니라 mssql이라 데이터베이스나 테이블 목록 보는 명령이 다르더라구요 -_ㅠ

      2019.05.27 15:49 신고 [ ADDR : EDIT/ DEL ]
  2. 잉? 그러고 보니 MS-SQL이네요.
    MS-SQL을 콘솔 명령어로 할 일이 있나요?
    이거 혹시 리눅스용인가요? 오호

    2019.05.27 15:57 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 네 리눅스에서 하려구요 ㅋㅋ
      귀찮아서 ms sql essential인가? 이거 안깔고 해보려고 하는거죠 ㅋㅋ

      2019.05.27 17:30 신고 [ ADDR : EDIT/ DEL ]

Programming/R2019.05.22 15:01

이제 R까지 해야하나.. ㅠㅠ

java가 있는데 인식을 못하고 뻘짓할때 이거 해주고

R 실행하면 되는 듯

 

sudo R CMD javareconf

[링크 : https://askubuntu.com/questions/1069463/not-able-to-install-rjava-in-r-ubuntu-18-04]

'Programming > R' 카테고리의 다른 글

R rJava 설정  (0) 2019.05.22
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/WinE2019.05.21 15:19

ie 실행하는데 이런 에러 나면서 화면이 안나오면 gecko 가 깔리지 않아서 그런거니

wine홈페이지에서 gecko를 받아서 깔면된다고 한다.

 

006e:err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.
Could not load wine-gecko. HTML rendering will be disabled.
0068:err:mshtml:create_document_object Failed to init Gecko, returning CLASS_E_CLASSNOTAVAILABLE

귀찮으니 32비트로 받아서 깔아쓴데

wine msiexec /i wine_gecko-2.47-x86_64.msi
or
wine msiexec /i wine_gecko-2.47-x86.msi

[링크 : https://ubuntuforums.org/showthread.php?t=2387138]

[링크 : https://wiki.winehq.org/Gecko]

 

ie도 작동하고 웬만큼 되는것 같은데 안되네..(원래 리눅스에서 하루 접속보상 받으려고 컬투맞고 하려고 한건데..)

$ wine "~/.wine/drive_c/windows/notepad.exe
$ wine "~/.wine/drive_c/Program Files (x86)/Internet Explorer/iexplore.exe"

 

+

[링크 : https://wiki.winehq.org/FAQ]

[링크 : https://www.hahwul.com/2018/08/install-kakaotalk-on-ubuntu-18.04.html]

'프로그램 사용 > WinE' 카테고리의 다른 글

wine ie  (0) 2019.05.21
wine 한글 폰트  (0) 2019.05.21
playonlinux @ 18.04 ubuntu  (0) 2019.05.20
odroid XU4 wine 실패? ㅠㅠ  (0) 2018.09.25
한층 더 쩔어진 winE  (0) 2012.04.08
wine 에서 cd넣고 실행시 에러 뜰때  (0) 2012.01.21
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/WinE2019.05.21 15:00

폰트 설치

 sudo apt-get install fonts-nanum*

[링크 : https://eungbean.github.io/2018/08/08/Ubuntu-Installation3/]

 

레지스트리

[링크 : http://www.nemonein.xyz/2018/01/31/우-쿠분투-17-10-wine-설치/

 

'프로그램 사용 > WinE' 카테고리의 다른 글

wine ie  (0) 2019.05.21
wine 한글 폰트  (0) 2019.05.21
playonlinux @ 18.04 ubuntu  (0) 2019.05.20
odroid XU4 wine 실패? ㅠㅠ  (0) 2018.09.25
한층 더 쩔어진 winE  (0) 2012.04.08
wine 에서 cd넣고 실행시 에러 뜰때  (0) 2012.01.21
Posted by 구차니

댓글을 달아 주세요