지금 모좀 하는데, 자바 공부할때마다 대학교에서부터 궁금했던건데


학교에서 배운건 싱크로나이즈 동기화 밖에 안배웠습니다.


물론  전역 변수를 선언해버리고서 해결하는 방법이 있습니다.(예전에 과제할때 이 방법을 많이 사용했습니다.)

(근데 이건 이렇게 하는게 아니라고 안좋다고 들었습니다.)


그런데 이렇게 안하고도 공식적인 방법으로 더 할수 있는 방법이 있습니다.


물론 여기에는 소스는 안올려놓고, 두개의 포스트를 추천 드리겠습니다. 


http://javacan.tistory.com/64


파이프를 사용해서 쓰레드간 통신 하는 방법 입니다. 파이프를 처음 사용하시는 분들은 API를 꼭 참고 하시기 바랍니다.

제가 여기서 많이 이상한짓을 많이해서


제가 지금 정확히는 기억안나는데 파이프로 전송할수 있는 범위는 0~255 만약 스트링이면, 캐릭터로 잘라서 전송하던지 해야할것 같습니다.

물론 다른방법도 있을것 같지만 그런부분에 대해서는 지식이 적어서


다른 한방법법은 블록킹큐를 이용하는 방법입니다.


http://devyongsik.tistory.com/430


지금 저도 필요한 작업을 하다가 사용하는 중이라 나중에 제대로 알고 나면 이부분에 대해서 소스를 첨부하던지 해서 보기 편한방법으로 다시 올려보겠습니다. 

저작자 표시 비영리 변경 금지
신고

A person holds a cup of Don Francisco coffee in Los Angeles August 12, 2010. Market researcher Packaged Facts projects U.S. coffee market growth of more than 25 percent between 2009 and 2014, with annual sales increasing to $59.6 billion from $47.5 billion. But demand for upscale coffee far outpaces that: the Specialty Coffee Association of America said sales of upscale coffee are growing at about 5 percent to 6 percent a year. Picture taken August 12, 2010. REUTERS/Sam Mircovich  (UNITED STATES - Tags: BUSINESS)



소켓프로그래밍을 하시는데 java.net.BindException: Address already in use 오류가 나온다면 100% 포트가 겹치는것입니다.
프로그래밍하시는 포트번호를 바꾸시던지 아니면 겹치는 프로그램을 종료해버리세요


겹치는걸 쉽게 확인하는 방법은 콘솔창에서 윈도우 기준 netstat -a -n -o 리눅스의 경우 nestat -ntlp
이거면 겹치는 포트를 아실수 있습니다. 리눅스의 경우는 pid가 보이니까 만약 데몬일경우 중지시켜버리거나 Kill 해버리시고 윈도우의 경우 작업표시줄에서 pid를 표시해서 막 어쩌구 저쩌구 나오는데.  그냥 제가 첨부하신 파일 사용하시는게 빠르실듯 합니다. 그러니까 그걸 왜 알려고 하는거면 그 포트를 점유하고 있는게 어떤 프로그램인지 앍 위해서인데
제가 쓰는 프로그램은 정말 알기 쉽게 나옵니다 더군다나 무설치이고요, 그냥 다운받으셔서 바로 실행하시면 됩니다.





저작자 표시 비영리 변경 금지
신고

'Study > --Java' 카테고리의 다른 글

Java sqlite jdbc  (0) 2011.07.14
[JAVA] atoi, iota  (5) 2011.07.07
Flex 와 Java XMLsocket을 사용하기  (0) 2010.08.19
java.net.BindException: Address already in use  (0) 2010.08.19
이클립스 가릴레오(galileo) 플러그인 지우는 방법  (0) 2009.10.26
JAVA 1.6 한글 api  (2) 2009.10.05
예외처리, Exception  (0) 2009.06.17
Jessica
Jessica by 旅の達人黒沢オティス 저작자 표시비영리동일조건 변경허락
흐악... 중간고사 기말고사를 지나서 여름방학이 오고야 말았습니다..
요즘따라 느끼는것은... 무엇인가 만들때 마다 만들때 마다 한계점에 도달한다는거랄까..

생각해보니 그나마 제대로 사용할수 있는 언어가 C(Gcc) , PHP( html 이런거 포함하고 자바 스크립트는..)ㅠㅠ

약간 부끄럽지만 3학년인데 자질마저 의심하고 있습니다. 물론 그동안 제가 가진 정서적인 사고방식에 의하면 매우 뜻깊게 시간을 보낸것 같기도 하지만, 공학적인 사고를 하면 엄청난 비효율적이였는지 나타나고 있네요... 이번방학에 해야될거 당장,, C++ 하고,, JAVA 둘다 객체지향이니 ::

그러니까 제가 이런생각을 하는것이 아,, 그렇네요, 전 학교에서 배우면서 이론과목이 매우 쓸모없다고 생각했었습니다..

그런데 생각해보면 이번 운영체제 Inter-process communication을 배웠었는데. IPC를 하기 위한 한 방법중 하나가 소켓이라는것도 알았네요..

지금 진행하고 있는 일이 잇는데.. 그러니까 구도가 PHP로 만들어진 페이지에서 명령을 내리면 C 라던지 다른 언어로 만들어진 어플리케이션 또는 프로그램이 작동되게 하는 구도입니다..

그런데,, 저는 소켓프로그래밍이 PHP에서도 가능하다고 들어서 PHP에서 echo서버를 구현하려고 했지만 - 약간은 한심한 생각이였던것 같습니다. 물론 제 지식에서는 .. 구글링을 해보니....순수 PHP가지고는 불가능하다는 결론이 내려졌습니다..

그동안 잘못생각했던것은 PHP가 웹에서만 작동한다고 생각했는데.. 어떤 프리랜서 프로그래머 분께서 쓰신글을 보면서 리눅스 콘솔상에서도 작동한다는것을 알게되었습니다.. 물론 글을 다 안읽어봤지만 그렇게 하면 echo 서버 구현도 가능하다고도 생각했지만.

일단 이글의 요점은. 웹페이지로 PHP를 접속했을때. 모 어떤 명령을 내릴수도 있찌만 C라던지 다른 프로그램으로 소켓이 날라가는 경우를 구현이라고 보다는 연습한 경우입니다. 만약 저와 비슷한 지식을 가지시거나 약간의 정보를 필요하셨던분이라면 얻으실수도 있을지 모르겠습니다.

그리고 여기서 사용되는 것은 UDP 입니다.



일단 간단히 연습해본 스샷입니다. 아이피부분은 제거해서 올린것이고,,
참고로 왼쪽 화면 같은 경우는 Gcc를 이용해서 UDP echo listing Server를 만들어서 10000번 포트로 열은 것입니다.


혹시 지나가는 컴쟁이님 계시면,, 약간의 조언을 주신다면 정말로 감사드립니다


차두리 == 로봇두리 == 안드로이드 == OS는 구글 == 안드로이드 2,2.................................................



저작자 표시 비영리 변경 금지
신고
1

+ Recent posts