본문 바로가기
반응형

cs공부/네트워크프로그래밍27

네트워크프로그래밍 - HTTP와 HTTPS HTTP(Hyper Text Transfer Protocol 또는 HyperTexT Protocol) WWW(World Wide Web)의 토대이며 하이퍼텍스트 링크를 사용하여 웹페이지를 로드하는데 사용된다. 이는 클라이언트/서버 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. 사용자가 웹 사이트를 방문하면 사용자 브라우저가 웹 서버에 HTTP 요청을 전송하고 웹 서버는 요청에대한 HTTP 응답으로 반환한다. 프로토콜이란? 네트워크나 통신 시스템에서 데이터를 주고 받는데 사용되는 규약이나 규칙의 집합이다. 그러므로 특정한 형식과 구조를 가지며 통신하는 장치들 간에 상호작용하는 방법을 정의한다. 프로토콜은 일반적으로 계층 구조를 가지며 대표적으로 TCP/IP 프로토콜이 있다. 이는 인터넷에서 데이터를 .. 2024. 3. 11.
네트워크 프로그래밍 - XML문서에서 패킷 패싱 및 패킷 데이터를 자동화 방식으로 읽고 쓸 수있는 형태의 템플릿 정의 XML문서에서 패킷 패싱하기 public static void ParsePacket(XmlReader r) 01 현재 Xml노드타입이 종료 요소인지 확인 if (r.NodeType == XmlNodeType.EndElement) return; 02 현재 요소의 이름이 packet인지 확인 이름이 packet이 아닌 경우 무효한 패킷 노드로 간주하고 적절한 오류 메시지 출력 if (r.Name.ToLower() != "packet") { Console.WriteLine("Invaild packet node"); return; } 03 name attribute값 확인 name어트리뷰트 값이 없거나 빈 문자열인 경우 오류메시지 출력 string packetName = r["name"]; if(string.I.. 2023. 8. 20.
네트워크프로그래밍 - XML형식으로 패킷 정의 +) XML, 마크업 설명 XML이 뭔가요? eXtensible Markup Language약자로 데이터를 구조화하고 표현하기 위한 마크업 언어이다. 태그를 이용해서 데이터를 기술한다. 태그에 추가 정보를 제공하기 위해 속성(attribute)를 사용할 수 있다. 마크업이 뭔가요? 마크업은 문서나 데이터의 구조와 의미를 표시하기 위해 사용되는 표기법이다. 이는 데이터를 구조화하고 표현하는데 사용되며 컴퓨터나 사람 모두가 이해할 수 있는 방식으로 전달하는데 사용된다. 01 텍스트 마크업 텍스트 문서내에서 특정 요소를 나타내기 위해 사용된다. 대표적인 예로 HTML(HyperText Markup Language)이 있다. 이는 웹페이지의 구조와 내용을 정의하며 태그를 사용하여 텍스트나 이미지등을 배치한다. 02 문서 마크업 문서 전체.. 2023. 8. 19.
네트워크 프로그래밍 - List 자료형 packet에 넣는 법 List안에 기본 int와 같은 자료형이 있는 경우 string, byte넘긴거와 마찬가지 List 몇개 있는지 밀어넣고 데이터를 밀어넣으면 된다. List안에 구조체가 있는 경우 public struct SkillInfo { public int id; public short level; public float duration; } public List skills = new List(); List가 몇개인지 short로 밀어 넣고 data를 밀어넣기 1. Write 01 크기 정보 기록 skills List의 요소 개수를 ushort로 변환하여 기록한다. success &= BitConverter.TryWriteBytes(s.Slice(count, s.Length - count), (ushort)ski.. 2023. 8. 17.
네트워크프로그래밍 - ENCODING(ASCII,UTF-8,UTF-16) ENCODING 문자열을 네트워크 패킷에 직렬화하여 보내기 위해서는 문자의 인코딩 방식을 고려해야한다. 문자열은 컴퓨터 내부에서는 숫자로 표현되며 텍스트를 어떤 숫자로 변환하고 그 역도 수행하는 과정이 필요하다. 이런 과정을 인코딩이라고 한다. 간단하게 사람의 언어를 컴퓨터의 언어로 변경하는 것이다. ASCII (American Standard Code for Information Interchange) ASCII는 영문 알파벳과 일부 특수 문자를 표현하기 위해 개발된 인코딩 방식이다. 각 문자를 7비트로 표현하며 총 128개의 문자를 표현할 수 있다. 영문에는 유용하지만 다른 언어를 지원하기에는 부족하다. 출처 : https://www.asciitable.com/ UNICODE 전세계의 모든 문자를 컴.. 2023. 8. 8.
네트워크프로그래밍 - packetId와 size에 대한 이슈(client의 거짓말, ReadOnlySpan) 패킷 자동화 처리 알아보러가기 네트워크프로그래밍 - 패킷 자동화 처리 객체지향 방법으로 수행하도록 하기 패킷 자동화 처리 알아보러 가기 네트워크프로그래밍 - 패킷 자동화 처리(TryWriteBytes,c#에서 포인터 사용하는 법) 패킷작업하기 서버, 클라이언트에 이 정보가 다 있어야 한다. class Packet { public sho code-piggy.tistory.com packetId를 굳이 패킷에 넣어주어야 하는가 ? Header를 보면 size와 packetId를 우리가 굳이 직접 사용해야 하는 경우가 거의 없다. public abstract class Packet { public ushort size; public ushort packetId; } Write는 우리가 open및 close하면.. 2023. 8. 7.
반응형