SOCKS ಹ್ಯಾಂಡ್‌ಶೇಕ್ ಯಶಸ್ವಿಯಾಯಿತು. ಈಗ ರಿಲೇ ಕ್ಲೈಂಟ್‌ನಿಂದ ಓದುತ್ತದೆ, ಗಮ್ಯಸ್ಥಾನಕ್ಕೆ ಬರೆಯುತ್ತದೆ, ಪೂರ್ಣ ಪ್ರತಿಕ್ರಿಯೆಗಾಗಿ ಕಾಯುತ್ತದೆ ಮತ್ತು ನಂತರವೇ ಮತ್ತೆ ಕ್ಲೈಂಟ್‌ನಿಂದ ಓದುತ್ತದೆ. ಆ ಕ್ರಮವು ಸಂಪೂರ್ಣ ಸರಿಯಾದ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಡೆಡ್‌ಲಾಕ್ ಮಾಡಬಹುದು.

TCP ಸುರಂಗ ಸ್ಥಾಪಿತವಾದ ನಂತರ SOCKS ಅದರ ಒಳಗಿನ ಸಂದೇಶಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದಿಲ್ಲ. ಗಮ್ಯಸ್ಥಾನವು ಮೊದಲು ಕಳುಹಿಸಬಹುದು. ಎರಡೂ ಬದಿಗಳು ಸ್ವತಂತ್ರವಾಗಿ ಕಳುಹಿಸಬಹುದು. ಒಂದು ಬದಿ ಚಿಕ್ಕ ದಾಖಲೆಯನ್ನು ಕಳುಹಿಸಿ ನಂತರ ಇನ್ನೊಂದರ ಉತ್ತರಕ್ಕಾಗಿ ಕಾಯಬಹುದು.

ಬೈಟ್‌ಗಳನ್ನು ರವಾನಿಸಿ, ಊಹಿಸಿದ ವಹಿವಾಟುಗಳನ್ನಲ್ಲ

ಸ್ವೀಕರಣ ಕರೆ ತನ್ನ ಫ್ಲ್ಯಾಗ್‌ಗಳು ಮತ್ತು ಸಾಕೆಟ್ ಸ್ಥಿತಿಗೆ ಅನುಗುಣವಾಗಿ ಲಭ್ಯವಿರುವ ಬೈಟ್‌ಗಳನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಅದು ಸಾಮಾನ್ಯ ರಿಲೇಗೆ ಅಪ್ಲಿಕೇಶನ್‌ನ ಪ್ರತಿಕ್ರಿಯೆ ಪೂರ್ಣವಾಗಿದೆ ಎಂದು ಹೇಳುವುದಿಲ್ಲ. ಅನಿಯತವಾದ ದೊಡ್ಡ ಬಫರ್ ತುಂಬುವವರೆಗೆ ಕಾಯುವುದು ಸಹಚರನಿಗೆ ಮುಂದುವರಿಯಲು ಬೇಕಾದ ಚಿಕ್ಕ ಸಂದೇಶವನ್ನು ರವಾನಿಸದಂತೆ ತಡೆಯಬಹುದು.

ಎರಡೂ ದಿಕ್ಕುಗಳಿಗೆ ಸೇವೆ ನೀಡಲು ಅಪ್ಲಿಕೇಶನ್‌ನ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸಮಕಾಲೀನ ಮಾದರಿಯನ್ನು ಬಳಸಿ: ಈವೆಂಟ್ ಲೂಪ್, ಅಸಮಕಾಲಿಕ I/O ಅಥವಾ ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಆಯ್ಕೆಮಾಡಿದ ಇನ್ನೊಂದು ವಿನ್ಯಾಸ. ಮುಖ್ಯ ವರ್ತನೆ ಎಂದರೆ ಒಂದು ದಿಕ್ಕಿನ ಪ್ರಗತಿಗೆ ಇನ್ನೊಂದರಲ್ಲಿ ಕಲ್ಪಿತ ಸಂದೇಶ ಮಿತಿ ಅಗತ್ಯವಿಲ್ಲ.

ಎರಡು ಸೀಮಿತ ಬಾಕಿ ಬಫರ್‌ಗಳನ್ನು ಇರಿಸಿ

ಕ್ಲೈಂಟ್‌ನಿಂದ ಓದಿದ ಡೇಟಾ ಇನ್ನೂ ಗಮ್ಯಸ್ಥಾನ ತಲುಪಲು ಕಾಯುತ್ತಿರಬಹುದು, ಆದರೆ ಗಮ್ಯಸ್ಥಾನದ ಡೇಟಾ ಕ್ಲೈಂಟ್ ತಲುಪಲು ಕಾಯುತ್ತಿದೆ. ಆ ಬಾಕಿ ಬೈಟ್‌ಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಟ್ರ್ಯಾಕ್ ಮಾಡಿ.

ಕಳುಹಿಸುವಿಕೆ ಕೇಳಿದ್ದಕ್ಕಿಂತ ಕಡಿಮೆ ಬೈಟ್‌ಗಳನ್ನು ಬರೆಯಬಹುದು. ಬರೆಯದ ಭಾಗವನ್ನು ಉಳಿಸಿ; ಅದನ್ನು ಬಿಸಾಡಬೇಡಿ ಮತ್ತು ಇಡೀ ಬಫರ್ ಅನ್ನು ಮತ್ತೆ ಚಲಾಯಿಸಬೇಡಿ. ತಾತ್ಕಾಲಿಕವಾಗಿ ಬರೆಯಲಾಗದ ಸಾಕೆಟ್ ಸರಿಯಾದ ಸಿದ್ಧತೆ ಘಟನೆಗಾಗಿ ಕಾಯುವ ಕಾರಣ, ನಿರಂತರವಾಗಿ ತಿರುಗುವುದಲ್ಲ.

ಬಫರ್‌ಗಳನ್ನು ಸೀಮಿತಗೊಳಿಸಿ. ಗಮ್ಯಸ್ಥಾನ ನಿಧಾನವಾಗಿದ್ದರೆ, ಮಿತಿಯಿಲ್ಲದ ಕ್ಲೈಂಟ್ ಡೇಟಾವನ್ನು ಓದುತ್ತಿರುವುದು ಕ್ಯೂ ಅನ್ನು ರಿಲೇಯ ಮೆಮೊರಿಗೆ ಸರಿಸುತ್ತದೆ ಅಷ್ಟೇ. ಬ್ಯಾಕ್‌ಪ್ರೆಶರ್ ಎಂದರೆ ಸಂಬಂಧಿತ ಬಾಕಿ ಬಫರ್ ತುಂಬಿದಾಗ ಓದುವಿಕೆಯನ್ನು ನಿಲ್ಲಿಸಿ, ಬರವಣಿಗೆ ಜಾಗ ಮಾಡಿದಾಗ ಮತ್ತೆ ಪ್ರಾರಂಭಿಸುವುದು.

ಒಂದು ದಿಕ್ಕಿನಲ್ಲಿ ಅಂತ್ಯಕ್ಕೆ ನೀತಿ ಬೇಕು

TCP ಕಳುಹಿಸುವ ದಿಕ್ಕನ್ನು ಮುಚ್ಚಬಹುದು, ಆದರೆ ಇನ್ನೊಂದು ದಿಕ್ಕಿನಲ್ಲಿ ಇನ್ನೂ ಉಪಯುಕ್ತ ಡೇಟಾ ಇರುತ್ತದೆ. ಬಫರ್ ಮಾಡಿದ ಬೈಟ್‌ಗಳು ಖಾಲಿಯಾದ ನಂತರ ಆ ಸ್ಥಿತಿಯನ್ನು ಹೇಗೆ ಪ್ರಸಾರ ಮಾಡುವುದು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಿ, ಮತ್ತು ಕ್ರಮಬದ್ಧ ಮುಚ್ಚುವಿಕೆಯನ್ನು ದೋಷ ಅಥವಾ ಗಡುವಿನಿಂದ ಪ್ರತ್ಯೇಕಿಸಿ.

ಇವುಗಳಲ್ಲಿ ಯಾವುದೂ ರಿಲೇ ಅಪ್ಲಿಕೇಶನ್‌ನ ಪೇಲೋಡ್ ಅನ್ನು ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡಲು ಅಥವಾ ಪಾರ್ಸ್ ಮಾಡಲು ಕೇಳುವುದಿಲ್ಲ. ಅದಕ್ಕೆ ಸರಿಯಾದ ಸ್ಟ್ರೀಮ್ ನಿರ್ವಹಣೆ ಬೇಕು. ಬಫರ್‌ನ ಗಾತ್ರವನ್ನು ಮಾತ್ರ ಹೆಚ್ಚಿಸುವುದು ತಪ್ಪು ಬದಿಗೆ ಕಾಯುವ ಅಥವಾ ಪ್ರತಿ ಓದುವಿಕೆಯನ್ನು ಒಂದು ಪೂರ್ಣ ವಿನಂತಿ ಎಂದು ಊಹಿಸುವ ರಿಲೇಯನ್ನು ಸರಿಪಡಿಸಲಾರದು.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು