Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Google direction
- 구글
- 안드로이드
- Google Map
- one pot pasta
- place picker
- google api
- android studio
- JSON parsing
- Google JSON
- RaspberryPi
- 파싱
- Parsing
- 구글 맵
- Ionicons
- one-pan pasta
- Android
- 서버
- json
- ReactNative
- googlemap
- 리액트네이티브
- 라즈베리파이
- 원팬파스타
- google places
- 위치 끄기
- 구글 플레이스
- 원팬 파스타
- 리액트 네이티브
Archives
- Today
- Total
날뛰는 코드
라즈베리파이에 소켓 통신 서버만들기 (17/08/25) 본문
* 기존 임베디드 수업 때 만들었던 소켓 통신용 서버를 이식해볼까 한다.
* 라즈베리파이 서버 코드
그냥 테스트용이라 클라이언트 하나 받고 받은 문자열을 그대로 출력해준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 |
#include <iostream>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define BUF_SIZE 512
#define MAX_BUF 32
using namespace std;
int main(int argc, char*argv[])
{
int server_fd, client_fd;
char buffer[BUF_SIZE];
struct sockaddr_in server_addr, client_addr;
char temp[20];
int msg_size;
socklen_t len;
// if (argc != 3) {
// printf("Usage : %s <port>\n", argv[0]);
// exit(1);
// }
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{//
cout << "Server : Can't open stream socket\n";
exit(0);
}
//server_Addr 을 NULL로 초기화
memset(&server_addr, 0x00, sizeof(server_addr));
//server_addr 셋팅
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
server_addr.sin_port = htons(9000);
if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) <0)
{//bind() 호출
cout << "Server : Can't bind local address.\n";
exit(0);
}
if (listen(server_fd, 5) < 0)
{//소켓을 수동 대기모드로 설정
cout << "Server : Can't listening connect.\n";
exit(0);
}
memset(buffer, 0x00, sizeof(buffer));
len = sizeof(client_addr);
cout << "Server : wating connection request.\n";
client_fd = accept(server_fd, (struct sockaddr *)&client_addr, &len);
inet_ntop(AF_INET, &client_addr.sin_addr.s_addr, temp, sizeof(temp));
cout << "Server : %s client connected.\n", temp;
while (1)
{
if (client_fd < 0)
{
cout << "Server: accept failed.\n";
return 0;
}
msg_size = read(client_fd, buffer, 1024);
cout << buffer << endl;
if (!strcmp(buffer, "fin"))
{
cout << "fin\n";
return 0;
}
memset(buffer, 0x00, sizeof(buffer));
}
close(server_fd);
return 0;
} |
cs |
전역변수로 된거 몇개 바꾸고 필요한거만 참조 하니까 돌아간다.
임베디드떄 쓴 보드가 너무 꾸렸어..
그냥 같은 회선 통신 테스트라
ifconfig로 ip확인하고
ping 잘가나 보고
오 잘감
클라이언트에 ip,포트 설정해준다.
*결과
잘된당
* 클라이언트는 첨부
프로젝트파일은 너무커서 안올라가네
- 이제 안드로이드 폰에서 클라이언트 만들고 통신테스트 해봐야지
- lte로 되려면 고정아이피 해서 포팅도해야되나 모르겠군 아직
위 링크에서 https://colorscripter.com/pcver 코드 입력하는거 가져왔는데 깔끔하네
'라즈베리파이' 카테고리의 다른 글
기본 세팅 정리 (라즈베리파이 Jessie, opencv, tensorflow) (0) | 2017.09.25 |
---|
Comments