분류 전체보기
- grep 2009.11.18
- v3zip 패치 되다! 려리군의 두 번째 리뷰입니다. 2009.10.09 3
- Computer virus 2009.10.07
- 악성코드 2009.10.07
- BHO 2009.10.07
- v3zip! 려리군의 첫 번째 리뷰입니다. 2009.10.07 2
- 시간 카운트 다운하는 프로그램을 만들어 봤습니다. 2009.09.16
- [TCP/IP 소켓 프로그래밍] 22. Completion Port 입출력 모델 2009.09.11
- [TCP/IP 소켓 프로그래밍] 21. Overlapped 입출력 모델 2009.09.11
- Iterator 2009.09.07
grep
v3zip 패치 되다! 려리군의 두 번째 리뷰입니다.
버전 : AhnLab V3 Zip 1.0.1.1 일시 : 2009년 10월 6일
업그레이드 내용
1. 대용량 압축파일 지원- 4GB 이상의 파일 압축/해제 기능 보완
- Zip64 포멧 지원
- 일본어 (EUC, JIS), 중국어(간체,번체) 지원
- 기존 압축 완료 후 파일 분할하던 방식에서 압축 시점에 분할 파일로 생성되도록 기능을 변경
5. 설치 방식의 개선
- 설치 중 탐색기 재실행하지 않음
- 진행률이 잘못 표기되는 오류 수정
- 압축 풀기 시 발생하는 오류처리 기능 개선
앞으로도 지속적인 관심과 제품 개선에 대한 고객님들의 많은 참여 부탁 드립니다.
'리뷰' 카테고리의 다른 글
주식예측 퀴즈앱 꾸욱 사용후기 (0) | 2021.05.12 |
---|---|
Hain(하인) 오픈소스 프로그램 사용 후기 (2) | 2016.04.13 |
맥북 소프트웨어 문제 애플고객지원센터 후기 (2) | 2016.03.13 |
[책]기업맞수열전 (0) | 2009.12.02 |
v3zip! 려리군의 첫 번째 리뷰입니다. (2) | 2009.10.07 |
Computer virus
Computer virus
컴퓨터 바이러스
A computer worm is a computer program that can copy itself and infect a computer without permission or knowledge of the user.
컴퓨터 바이러스는 스스로 복사가 가능하고 사용자의 인지나 허락 없이 컴퓨터를 감염시키는 컴퓨터 프로그램이다.
The term "virus" is also commonly used, albeit errorneously, to refer to many different types of malware programs.
용어 바이러스는 널리 쓰이며 다른 많은 종류의 악성(malware) 프로그램으로 잘못 쓰이기도 한다.
The original virus may modify the copies, or the copies may modify themselves, as occurs in a metamorphic virus.
원래 바이러스는 변이하는 바이러스에서 발생하는 것처럼 복사본을 수정할 수 있거나 복사본이 스스로를 수정할 수 있다.
A virus can only spread from one computer to another when its host is taken to the uninfected computer, for instance by a user sending it over a network on the Internet, or by carrying it on a removable medium such as a floppy disk, CD or USB drive.
바이러스는 오직 한 호스트 컴퓨터가 감염되지 않은 컴퓨터로 전송될 때 예를 들어 인터넷의 네트워크로 바이러스를 보내거나 플로피 디스크, CD, USB 드라이브 같은 제거할 수 있는 매체를 통해 바이러스를 전송할 때 한 컴퓨터에서 다른 곳으로 퍼질 수 있다.
Meanwhile viruses are sometimes confused with computer worms and Trojan horses.
반면 컴퓨터 바이러스는 컴퓨터 웜이나 트로이 목마와 혼동된다.
A worm can spread itself to other computers without needing to be transffered as part of a host.
웜은 호스트의 부분으로써 전송될 필요가 없이 다른 컴퓨터에게 전파된다.
and Trojan horse is a file that appears harmless.
그리고 트로이 목마는 해가 없을 거 같은 파일이다.
Both worms and Trojans will cause harm to computers when executed.
웜과 트로이 목마 둘 다 실행될 때 컴퓨터에게 해를 끼친다.
Most personal computers are now connected to the Internet and to local area networks, facilitating the spread of malicious code.
대부분 개인 컴퓨터는 악성코드가 전파될 수 있는 LAN이나 인터넷에 연결되어 있다.
Today's viruses may also take advantage of network services such as the World Wide Web, e-mail, Instant Messaging and file sharing systems to spread, blurring the line between viruses and worms.
오늘날 바이러스와 웜의 경계선이 모호해 지고 파일 공유 시스템과 인스턴트 메세징, 이메일, 월드와이드웹 같은 네트워크 서비스에서 이익을 취한다.
Furthermore, some sources use an alternative terminology in which a virus is any form of self-replicating malware.
게다가 몇 곳은 어떤 자가 복제를 하는 악성코드인 바이러스를 대체용어로 사용하기도 한다.
Some viruses are programmed to damage the computer by damaging programs, deleting files, or reformating the hard disk.
일부 바이러스는 하드디스크를 포맷하거나 파일을 지우거나 프로그램을 손상시킴으로서 컴퓨터에 피해를 주도록 프로그래밍 되어 있다.
Others are not designed to do any damage, but simply replicate themselves and perhaps make their presence known by presenting text, vidio, or audio messages.
다른 바이러스는 피해를 주도록 만들어지지 않았지만 스스로 간단히 복사되며 글자, 비디오, 오디오 메시지로 표현함으로서 존재를 알릴 것이다.
Even these benign viruses can create problems for the computer user.
이러한 종양같은 바이러스들은 컴퓨터 사용자들에게 문제를 야기한다.
They typically take up computer memory used by legitimate programs.
바이러스들은 일반적으로 합법적인 프로그램에 의해 사용되는 컴퓨터 메모리에 올려진다.
As a result, they often cause erratic behavior and can result in system crashes.
결국, 바이러스는 엉뚱한 행동이나 시스템 충돌을 야기한다.
In addition, many viruses are bug-ridden, and these bugs may lead to system crashes and data loss.
게다가 많은 바이러스들은 버그 투성이이고 이러한 버그들은 데이터 손실이나 시스템 충돌을 야기한다.
악성코드
출처 : http://en.wikipedia.org/wiki/Malware
Malware
악성코드
Malware, short for malicious software, is a software designed to infiltrate or damage a computer system without the owner's informed consent.
악성 소프트웨어, 줄여서 악성코드는 사용자의 알려진 동의 없이 컴퓨터 시스템에 피해를 주거나 침투하는 소프트웨어이다.
The expression is a general term used by computer professionals to mean a variety of forms of hostile, intrusive, or annoying software or program code.
다양한 형태로 악의적으로 컴퓨터 사용자에 침입하고 괴롭히는 소프트웨어나 프로그램 코드를 의미하는 컴퓨터 전문가에 의해 사용되는 일반적인 용어다.
Many normal computer users are however still unfamiliar with the term, and most never use it.
많은 일반 컴퓨터 사용자들은 그러나 이 용어에 익숙하지 않고 대부분 사용하지 않는다.
Instead, "computer virus" is incorrectly used in common parlance and even in the media to describe all kinds of malware, though not all malware are viruses.
대신 "컴퓨터 바이러스"는 일반 회담에서 잘못 사용되며 대중매체에서조차 모든 종류의 악성코드를 묘사하지만 모든 악성코드는 바이러스가 아니다.
Software is considered malware based on the perceived intent of the creator rather than any particular features.
소프트웨어는 악성코드를 특별한 특징보다 제작자의 인지된 의도를 바탕으로 고려된다.
Malware includes computer viruses, worms, trojan horse, most rootkits, spyware, dishonest adware, and other malicious and unwanted software.
악성코드는 컴퓨터 바이러스, 웜, 트로이 목마, 대부분의 루트킷, 스파이웨어, 정직하지 못한 애드웨어 그리고 다른 악성코드 및 원하지 않는 소프트웨어를 포함한다.
In law, malware is sometimes known as a computer contaminant, for instance in the legal codes of California, West Virginia, and several other American states.
법에서 악성코드는 컴퓨터 오염물질로 알려져 있는데 예를 들어 켈리포니아, 웨스트 버지니아, 그리고 몇 개 다른 주에서는 합법적인 코드이다.
Malware is not the same as defective software, that is, soft which has a legitimate purpose but contains harmful bugs.
악성코드는 다른 컴퓨터를 감염시키는 소프트웨어와 같지 않다. 즉, 합법적인 목적을 가지지만 해로운 버그를 포함하는 소프트웨어이다.
단어공부
infiltrate 침투하다
1. to enter or make sb enter a place or an organization secretly, especially in order to get information that can be used against it
2. to pass slowly into sth
intrusive 침입의, 주제넘게 참견하는
too noticeable, direct, etc. in a way that is disturbing or annoying
parlance 회담
(formal) a particular way of using words or expressing yourself, for example one used by a particular group
contaminant 오염균
a substance that makes sth impure
'번역' 카테고리의 다른 글
MEMORY Storage Engine (0) | 2016.11.04 |
---|---|
테스트 주도 개발 (0) | 2016.01.22 |
Computer virus (0) | 2009.10.07 |
BHO (0) | 2009.10.07 |
행성의 정의 (0) | 2009.08.03 |
BHO
출처 : http://en.wikipedia.org/wiki/Browser_Helper_Object
Browser Helper Object
브라우저 도우미 객체
From Wikipedia, the free encyclopedia
Add-on Manager from Windows XP SP2 Internet Explorer
Window XP SP2 인터넷 익스플로어의 Add-on Manager
A Browser Helper Object (BHO) is a DLL module designed as a plugin for Microsoft's Internet Explorer web browser to provide added functionality.
브라우저 도우미 객체는 추가된 기능을 제공하기 위해 인터넷 익스플로어 웹 브라우저를 위한 플러그인으로서 제작된 DLL module이다.
BHOs were introduced in October 1997 with the release of version 4 of Internet Explorer.
BHO는 인터넷 익스플로어 버젼 4를 발매한 1997년 10월에 소개되었다.
Most BHOs are loaded once by each new instance of Internet Explorer.
대부분의 BHO는 인터넷 익스플로러의 새 인스턴스를 만들 때 로드된다.
However, in the case of the Windows Explorer, a new instance is launched for each window.
그러나, 윈도우 익스플로러의 경우, 새 인스턴스가 각 윈도우에 대해 호출된다.
Some modules enable the display of different file formats not ordinarily interpretable by the browser.
일부 모듈은 브라우저에 의해 보편적으로 해석될 수 없든 다른 파일 포멧의 표시를 가능하게 한다.
The Adobe Acrobat plugin that allows Internet Explorer users to read PDF files within their browser is a BHO.
브라우저 내에서 PDF 파일을 읽도록 인터넷 익스플로러 사용자에게 허용하는 Adobe Acrobat plugin이 BHO다.
Other modules add toolbars to Internet Explorer, such as the Alexa Toolbar that provides a list of web sites related to the one you are currently browsing, or the Google Toolbar that adds a toolbar with a Google search box to the browser user interface.
다른 모듈은 인터넷 익스플로러에 추가되는 툴바이다. 당신이 현재 찾고 있는 사이트와 관련된 웹 사이트의 리스트를 제공하는 Alexa 툴바나 브라우저 사용자 인터페이스로 구글 검색 창과 함께 툴바를 추가하는 구글 툴바가 있다.
Concerns
우려사항
The BHO API exposes hooks that allow the BHO to access the Document Object Model (DOM) of the current page and to control navigation.
BHO API는 현재 페이지의 DOM을 접근하고 네비게이션을 제어하도록 BHO에게 허용하는 후킹에 노출되어 있다.
Because BHOs have unrestricted access to the Internet Explorer event model, some forms of malware have also been created as BHOs.
BHO는 인터넷 익스플로어 이벤트 모델에 제한되지 않은 접근을 하기 때문에 악성코드의 일부 형태는 BHO로만들어져 왔다.
For example, the Download.ject malware installs a BHO that would activate upon detecting a secure HTTP connection to a financial institution, record the user's keystrokes (intending to capture passwords) and transmit the information to a website used by Russian computer criminals.
예를 들어 Download.ject 악성코드는 금융기관으로 안전한 HTTP접속을 탐지하는데 활성화되고 (비밀번호를 얻기 위한) 사용자의 입력된 키를 기록하며 러시아 컴퓨터 범죄인들에 의해 사용되는 웹사이트로 정보를 전송하는 BHO를 설치한다.
Other BHOs such as the MyWay Searchbar track users' browsing patterns and pass the information they record to third parties.
MyWay Searchbar처럼 다른 BHO들은 사용자들의 웹서핑 패턴을 추적하고 그들이 기록한 정보를 3자에게 전달한다.
Many BHOs introduce visible changes to a browser's interface, such as installing toolbars in Internet Explorer and the like, but others run without any change to the interface.
많은 BHO들은 인터넷 익스플로어에 툴바를 설치하는 것처럼 브라우저의 인터페이스를 눈에 띄게 변화를 주지만 다른 BHO들은 인터페이스에 변화없이 실행한다.
This renders it easy for malicious coders to conceal the actions of their browser add-on, especially since, after being installed, the BHO seldom requires permission before performing further actions.
이는 악성코드 작성자가 그들의 브라우저 add-on의 행동을 숨기기 쉽도록 하며 특히 설치된 후, BHO는 행동을 수행하기 전에 허락을 거의 요구하지 않는다.
For instance, variants of the ClSpring trojan use BHOs to install scripts to provide a number of instructions to be performed such as adding and deleting registry values and downloading additional executable files, all completely transparent to the user [1].
예를 들어, CISpring 트로이 목마 변형은 BHO를 사용자들에게는 모두 완벽히 보이지 않고 추가적인 실행 파일을 다운로드 받고 레지스트리 값을 추가하거나 지우는 것 같은 일을 수행함으로써 많은 명령어들을 제공하는 스크립터를 설치하도록 한다.
The DyFuCA spyware even replaces IE's general error page with an ad page.
DyFuCA 스파이웨어는 광고 페이지와 함께 IE의 일반적인 오류 페이지를 대체하기도 한다.
In response to the problems associated with BHOs and similar extensions to Internet Explorer, Microsoft debuted an Add-on Manager in Internet Explorer 6 with the release of Service Pack 2 for Windows XP (updating it to IE6 Security Version 1 (a.k.a. SP2).
인터넷 익스플로어의 BHO와 비슷한 확장 모듈과 관련된 문제에 대응하여, 마이크로소프트는 서비스 팩2 출시와 함께 인터넷 익스플로어에 Add-on 메니저를 출시했다.
This utility displays a list of all installed BHOs, browser extensions and ActiveX controls, and allows the user to enable or disable them at will.
이 유틸리티는 모든 설치된 BHO의 목록을 보여주고, 브라우저 확장 모듈과 ActiveX 컨트롤, 그리고 사용자에게 의지대로 이러한 모듈들을 사용자가 가능하게 혹은 불가능하게 한다.
There are also free tools (such as BHODemon) that list installed BHOs and allow the user to disable malicious extensions.
(BHODemon같은) 설치된 BHO들을 보여주는 무료 툴들이 있고 이는 사용자들에게 악성 확장모듈을 사용하지 못하도록 한다.
Spybot S&D has a similar tool built in to allow the user to disable installed BHOs.
Spybot S&D는 설치된 BHO들을 사용하지 못하게 하는 비슷한 built-in 툴이 있다.
Many anti-spyware applications also offer the capability to block the download or install of BHOs identified as malicious.
많은 백신 프로그램들은 악성으로 확인된 BHO의 설치나 다운로드를 차단하는 능력들을 제공한다.
render = make, ~을 ~하게 하다.
conceal 숨기다.
'번역' 카테고리의 다른 글
MEMORY Storage Engine (0) | 2016.11.04 |
---|---|
테스트 주도 개발 (0) | 2016.01.22 |
Computer virus (0) | 2009.10.07 |
악성코드 (0) | 2009.10.07 |
행성의 정의 (0) | 2009.08.03 |
v3zip! 려리군의 첫 번째 리뷰입니다.
기능소개
③ 일본어 인코딩 상태로 압축을 풀었더니 다음과 같이 총 파일수와 용량이 맞음을 확인할 수 있었습니다.
'리뷰' 카테고리의 다른 글
주식예측 퀴즈앱 꾸욱 사용후기 (0) | 2021.05.12 |
---|---|
Hain(하인) 오픈소스 프로그램 사용 후기 (2) | 2016.04.13 |
맥북 소프트웨어 문제 애플고객지원센터 후기 (2) | 2016.03.13 |
[책]기업맞수열전 (0) | 2009.12.02 |
v3zip 패치 되다! 려리군의 두 번째 리뷰입니다. (3) | 2009.10.09 |
시간 카운트 다운하는 프로그램을 만들어 봤습니다.
★취업과 TOEIC(취토)★ 토익900 (http://cafe.daum.net/4toeic)
원래는 텝스학원을 다니고 있어서 시간 맞춰보려고 만들었던 건데... 요번주 일요일에 삼성 SSAT를 보게 되었습니다. ^^; 게을러서 이력서 쓰다 딴짓하다 해서 벼락치기 해야할 듯 합니다. ㅠㅠ;
위에 밑줄 친 거 다운 받으셔서 설치하시면 되고요... '불러오기' 하셔서 SSAT.tim 파일 불러오시면 시간이 나오고요... 재생(▶)버튼 누르시면 시간이 카운트다운되고 첫번째줄의 시간이 0이 되면 소리가 나는 구조입니다. 그리고 알아서 다음 줄에 해당하는 시간이 카운트다운되고요.
언어영역 23분 수리영역 30분 추리영역 22분 공간지각 20분 시사영역 25분 상황판단 25분
이렇게 알고 있는데요... 이공계나 인문계와 시간 배분이 다른지도 궁금하고... 1~5번째줄은 1부시험으로 알고 있고 상황판단과 인성검사는 2부로 알고 있는데... 위의 시간 표시가 잘 되어 있는 지 알고 싶습니다.
만약 시간이 틀리다면 SSAT.tim파일과 프로그램을 수정해서 올릴 계획입니다.
모두 취업 건승하시고 좋은 하루 되세요~
★취업과 TOEIC(취토)★토익900
|
'My Work' 카테고리의 다른 글
Web Ping (웹을 통한 핑 체크) (0) | 2014.03.20 |
---|---|
마이피플 숫자야구 봇 (8) | 2013.07.30 |
Wheeler(마우스 휠버튼을 이용한 화면 캡쳐프로그램) (2) | 2010.12.19 |
FreeTDS (0) | 2010.02.11 |
자기소개서 쓸 때 필요한 '글자수 세기' 입니다. (10) | 2009.07.22 |
[TCP/IP 소켓 프로그래밍] 22. Completion Port 입출력 모델
※ 일반적인 쓰레드기반 다중 서버...
서버쪽 쓰레드 하나가 하나의 소켓을 전담한다.
서버쪽 쓰레드가 계속해서 일하는 것이기 아니기 때문에 소켓과 쓰레드가 1:1 대응되는 것은 서버에 부담이 된다.
1. 리소스 부담...
2. context switching이 빈번하게 발생하기 때문...
※ 소켓의 수는 줄일 수 없다.
하지만, 하나의 쓰레드가 3개의 소켓을 한꺼번에 담당한다면 리소스 부담 감소, context switching 감소...
22-1. Completion Port 입출력 기본 원리
IOCP란?
1. 기본적으로 비동기 입출력 모델이다. Overlapped IO
2. 제한된 쓰레드의 수를 통해서 여러 소켓의 입출력을 담당하게 한다.
3. 컨텍스트 스위칭에 소비되는 시간을 줄이는 모델이다.
4. Overlapped 입출력 모델의 특징과 비동기 Notification 입출력 모델의 특징을 동시에 지닌다.
원래 비동기 Notification 입출력 모델 : 먼저 확인 후 그 다음 입출력한다.
IOCP모델 : 먼저 입출력 한 후 확인을 나중에 한다.
IOCP 구현모델
Completion Port 내부에 큐가 생성된다.
연결된 소켓이 입출력이 완료되면 Completion Packet을 만든다.
Completion Packet에는 입출력이 완료한 소켓 정보등에 대한 데이터 묶음이다.
이 packet을 Completion Queue에 집어 넣는다.
쓰레드는 큐에서 packet을 꺼내 내용을 처리한다.
IOCP에서 적절한 쓰레드의 수
Response Session : 서버가 클라이언트로 온 요청을 처리하고 전송하기 직전까지 준비과정.
Response Session이 짧은 경우(간단한 연산 결과를 돌려줌) : CPU의 개수를 초과하지 않는다.
Response Session이 긴 경우 : CPU의 개수를 적절히 초과하여 클라이언트의 평균 만족도를 높인다.
※ 실험적으로 판단하여 평가해야 한다.
일반적인 경우 : CPU의 개수를 초과하지 않는다.
22-2. Completion Port 입출력을 위한 기본 단계
1. Completion Port 오브젝트의 생성
HANDLE CreateIoCompletionPort(
HANDLE FileHandle, // 연결 시킬 소켓 핸들
HANDLE ExistingCompletionPort, // 연결시킬 completion port 핸들
ULONG_PTR CompletionKey, // completion key
DWORD NumberOfConcurrentThreads // 동시 실행 가능한 쓰레드의 수
);
실행예)
HANDLE hCompletionPort = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);
※ NumberOfConcurrentThreads가 0이면 CPU의 수만큼 허용
2. Completion Port 오브젝트와 소켓의 연결
completionKey : 입출력이 완료되었을 때 Completion Packet에 저장하는 추가적인 데이터
실행예)
CreateIoCompletionPort(소켓핸들, hCompletionPort, (DWORD)PerHandleData, 0);
3. Completion Queue에 들어 있는 패킷 정보 확인
BOOL GetQueuedCompletionStatus(
HANDLE CompletionPort, // completion port 핸들
LPDWORD lpNumberOfBytes, // 전송된 바이트수
PULONG_PTR lpCompletionKey, // file completion key
LPOVERLAPPED *lpOverlapped, // buffer
DWORD dwMilliseconds // 선택적인 timeout 값
);
2,3,4 인자를 통해 completion packet의 내용을 얻어온다.
22-3 Completion Port 입출력 기반의 서버구현
CreateCompletionPort의 키 : 완료된 소켓의 정보
Completion Port : 완료감지, completion packet 생성 : key, overlapped, 전송 바이트 수로 구성.
WSARecv의 6번째 인자인 LPWSAOVERLAPPED에서 hEvent를 이용한다. ->
수신된 데이터가 존재하는 버퍼 정보를 담음. overlapped 구조체 뿐만 아니라 다른 구조체도 추가 가능.
'네트워크 프로그래밍' 카테고리의 다른 글
[TCP/IP 소켓 프로그래밍] 21. Overlapped 입출력 모델 (0) | 2009.09.11 |
---|---|
[TCP/IP 소켓 프로그래밍] 20. 동기와 비동기의 이해 (2) | 2009.08.28 |
[TCP/IP 소켓 프로그래밍] 19. 윈도우즈 기반 쓰레드 동기화 (0) | 2009.08.24 |
[TCP/IP 소켓 프로그래밍] 18. 윈도우즈 기반 쓰레드 사용하기 (0) | 2009.08.20 |
[TCP/IP 소켓 프로그래밍] 17. 프로세스(Process)와 쓰레드(Thread) (0) | 2009.08.19 |
[TCP/IP 소켓 프로그래밍] 21. Overlapped 입출력 모델
21-1. Overlapped 입출력의 의미
비중첩 데이터 입출력 모델
중첩된 데이터 입출력 모델
하나의 쓰레드 내에서 여러 개의 입출력이 진행되는 것
21-2. Overlapped 입출력을 위한 기본 단계
1. Overlapped 소켓의 생성
SOCKET WSASocket(
__in int af,
__in int type,
__in int protocol,
__in LPWSAPROTOCOL_INFO lpProtocolInfo,
__in GROUP g,
__in DWORD dwFlags
);
af : address family
type : 소켓 형태
protocol : 사용된 프로토콜(여기까지 socket과 동일)
lpProtocolInfo : 생성될 소켓의 성경을 정의하는 wSAPROTOCOL_INFO 포인터
g : 예약됨.
dwFlags : 소켓 속성을 지정하는 플래그
WSASocket(PF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED);
WSA_FLAG_OVERLAPPED는 Overlapped 입출력이 가능하도록 하는 플래그.
2. 데이터 송수신
※ 다음 함수들은 버퍼에 존재하는 데이터를 모아서 한 번에 전송하고(Gather) 수신된 데이터를 여러 버퍼에 나누어 저장(Scatter)하는 Gather/Scatter 입출력을 한다.
int WSASend(
SOCKET s, // 소켓 핸들
LPWSABUF lpBuffers, // WSABUF 구조체 배열의 포인터
DWORD dwBufferCount, // lpBuffers가 가리키는 배열의 크기
LPDWORD lpNumberOfBytesSent, // 전송된 바이트 수를 저장하기 위한 포인터
DWORD dwFlags,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTING lpCompletionRoutine
);
리턴 : 성공시 0, 실패시 SOCKET_ERROR
typedef struct __WSABUF{
u_long len;
char FAR *buf;
}WSABUF, FAR* LPWSABUF;
int WSARecv(
SOCKET s, // 소켓 핸들
LPWSABUF lpBuffers, // 수신 버퍼 정보를 지니는WSABUF 구조체 배열의 포인터
DWORD dwBufferCount, // lpBuffers가 가리키는 배열의 크기
LPDWORD lpNumberOfBytesRecvd, // 전송된 바이트 수를 저장하기 위한 포인터
DWORD dwFlags,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTING lpCompletionRoutine
);
리턴 : 성공시 0, 실패시 SOCKET_ERROR
lpOverlapped : 중첩된 입출력을 하기 위해 사용.
3. 데이터 송수신 완료 확인
이벤트 커널 오브젝트 기반
CALLBACK 함수 기반
'네트워크 프로그래밍' 카테고리의 다른 글
[TCP/IP 소켓 프로그래밍] 22. Completion Port 입출력 모델 (0) | 2009.09.11 |
---|---|
[TCP/IP 소켓 프로그래밍] 20. 동기와 비동기의 이해 (2) | 2009.08.28 |
[TCP/IP 소켓 프로그래밍] 19. 윈도우즈 기반 쓰레드 동기화 (0) | 2009.08.24 |
[TCP/IP 소켓 프로그래밍] 18. 윈도우즈 기반 쓰레드 사용하기 (0) | 2009.08.20 |
[TCP/IP 소켓 프로그래밍] 17. 프로세스(Process)와 쓰레드(Thread) (0) | 2009.08.19 |
Iterator
foreach 반복문
foreach(object obj in list)
{
DoSomthing(obj);
}
효과적이고 사용하기 쉬움
foreach문을 지원하는 타입
1. 기존타입(Array,List..)을 상속하여 사용
2. 새로운 타입 선언 가능 -> 인터페이스 구현
foreach를 지원하는 타입 정의(C#1.0)
IEnumerator e = list.getEnumerator(); // 특정 메소드를 선언하고 있다고 가정한다.
while(e.MoveNext()) // 다음 한 칸 이동하고 이동가능한지 리턴.
{
object obj = e.Current;
DoSomething(obj);
}
※ foreach를 지원하기 위해서는 다음 인터페이스를 구현하면 된다.
1. IEnumerable
public interface IEnumerable{
IEnumerator GetEnumerator();
}
2. IEnumerator
public interface IEnumerator{
object Current {get;} // object로 되어 있기 때문에 boxing, unboxing필요...
bool MoveNext(); // 어떠한 순서로 돌아가는 지 정의... 한가지 형태의 반복만 가능.
void Reset();
}
※ yield return을 통해서 컴파일러 수준에서 Enumerator를 만들어준다.
public IEnumerator GetEnumerator()
{
for(int i=0; i < Cities.Length; i++)
{
yield return Cities[i];
}
}
※ IEnumerable<string>와 같이 Generic을 이용하면 속도가 더 빠를 수 있다. boxing, unboxing없음.
Iterator 구문(2.0)
반복문 내부에서 yield 키워드 사용
C# 컴파일러가 iterator를 대신 구현해줌.
IEnumerable과 IEnumerator의 구체적인 구현 생략가능.
Generics 버전 인터페이스 : IEnumerable<T>, IEnumerator<T>
Iterator 주의사항
중첩 foreach문 사용자제 -> index를 이용한 for 반복문 사용 권장.
'C#' 카테고리의 다른 글
Nullable Type (0) | 2009.09.07 |
---|---|
Generic (0) | 2009.09.07 |
Partial Class (0) | 2009.08.29 |
C# 3장 간단 정리 (0) | 2009.07.30 |
C# 2장 간단 정리 (0) | 2009.07.30 |