WinSock2.h를 이용한 간단한 윈도우 서버 & 클라이언트 프로그램

이번 1학기 때 시스템 프로그래밍을 들으면서 소켓 프로그래밍을 배운 적이 있습니다. 대부분의 수업은 리눅스에서 작업했지만 소켓 통신은 윈도우 환경에서도 짜보게 되었는데요, 오늘 업무 중에 간단한 서버 & 클라이언트 프로그램을 짜보라고 하셔서 복습 겸 손풀기 겸 해서 프로그램을 짰습니다. 부탁받은 프로그램은 아래와 같은 행동을 합니다. 서버를 실행하고 클라이언트를 실행한다 클라이언트가 서버에 접속하면 서버는 1초 기다린 다음

C# Socket

SocketsInCS_src   // using System;using System;using System.Threading; // Sleepingusing System.Net; // Used to local machine infousing System.Net.Sockets; // Socket namespaceusing System.Collections; // Access to the Array list namespace ChatServer{ /// <summary> /// Main class from which all objects are created /// </summary> class AppMain { // Attributes private ArrayList m_aryClients = new ArrayList(); // List

스레드로부터 안전한 방식으로 Windows Forms 컨트롤 호출

스레드로부터 안전한 방식으로 Windows Forms 컨트롤 호출 Windows Forms 응용 프로그램의 성능을 개선하기 위해 다중 스레딩을 사용하는 경우에는 스레드로부터 안전한 방식으로 컨트롤을 호출할 수 있습니다. Windows Forms 컨트롤에 대한 액세스는 기본적으로 스레드로부터 안전하지 않습니다. 둘 이상의 스레드가 컨트롤 상태를 조작하는 경우 컨트롤이 불일치하는 상태로 강제 지정될 수 있습니다. 또한 경합 상태와 교착 상태 등의 기타

Microsoft Network Monitor 소켓모니터링

다운로드사이트 첨부파일(압축) Network Monitor (Netmon)는 네트워크 프로토콜 트래픽 분석 유틸리티입니다. Network Monitor 3.1 을 사용해서 네트워크 프로토콜을 수집하는 몇 가지 방법을 정리하였습니다. Netmon 2.x와 3.x의 가장 큰 변화는 캡쳐 필터링이라고 생각합니다. 캡쳐 필터링 옵션 변화에 따른 패킷 수집 방법을 사례 별로 아주 기본적인 테스트를 해 봅니다. 일반적으로 Netmon 트래픽을 수집하기 위해서는 Client와 Server 측에서 함께 로그

c# 비동기 서버 소켓 예제

using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; // State object for reading client data asynchronously public class StateObject { // Client socket. public Socket workSocket = null; // Size of receive buffer. public const int BufferSize = 1024; // Receive buffer. public byte[] buffer = new byte[BufferSize]; // Received data string. public

C# 패킷스나이퍼

MJsniffer 패킷스나이퍼 TCPHeader.byTCPData에서 Data Packet도 볼수 있다 //tree node private TreeNode MakeTCPTreeNode(TCPHeader tcpHeader) { TreeNode tcpNode = new TreeNode(); tcpNode.Text = “TCP”; tcpNode.Nodes.Add(“Source Port: ” + tcpHeader.SourcePort); tcpNode.Nodes.Add(“Destination Port: ” + tcpHeader.DestinationPort); tcpNode.Nodes.Add(“Sequence Number: ” + tcpHeader.SequenceNumber); if (tcpHeader.AcknowledgementNumber != “”) tcpNode.Nodes.Add(“Acknowledgement Number: ” + tcpHeader.AcknowledgementNumber); tcpNode.Nodes.Add(“Header Length: ” + tcpHeader.HeaderLength); tcpNode.Nodes.Add(“Flags: ” + tcpHeader.Flags);