Junior
169
Socket дегеніміз не?
AI-дан жауап
sobes.tech AI
Сокет (socket) — бұл екі бағдарлама арасындағы желі арқылы екіжақты желілік өзара әрекеттестіктің соңғы нүктесінің абстракциясы.
Желілік бағдарламалау контекстінде, сокет — бұл бағдарламалық объект, ол:
- IP-мекенжай + порт жұбы арқылы идентификацияланады.
- Мәліметтерді жіберу және қабылдау үшін интерфейс болып табылады.
- Процестерге ақпарат алмасу тәсілін ұсынады, олар бір машинада немесе әртүрлі машиналарда орналасқан болса да.
Транспорт деңгейі протоколына байланысты екі негізгі типтік сокет бар:
- TCP-сокеттер (ағындар):
- TCP протоколын пайдаланады.
- Сенімді, қосылымға бағытталған ағынды деректерді беру қамтамасыз етеді.
- Мәліметтердің жеткізілуін, тәртібін сақтау және қайталанулардың болмауын кепілдейді.
- Сенімді жеткізу талап ететін протоколдар үшін пайдаланылады (HTTP, FTP, SSH).
- UDP-сокеттер (дейтаграммалар):
- UDP протоколын пайдаланады.
- Сенімсіз, қосылымсыз деректерді дейтаграммалар түрінде жеткізеді.
- Жеткізу, тәртіп немесе қайталанулардың болуын кепілдемейді.
- Жылдамдығы маңызды болған протоколдар үшін пайдаланылады (DNS, ағынды видео/аудио).
Java-да сокет программалау java.net пакетіндегі сыныптар арқылы жүзеге асырылады:
Socket— клиенттік TCP-сокеттер үшін.ServerSocket— серверлік TCP-сокеттер үшін.DatagramSocket— UDP-сокеттер үшін.DatagramPacket— UDP-дейтаграммалары үшін.
Қарапайым TCP-клиенттің мысалы:
import java.net.Socket;
import java.io.OutputStream;
// TCP-клиент сыныбы
public class SimpleTcpClient {
// Сокетті құру және пайдалану әдісі
public static void main(String[] args) {
try {
// Клиенттік сокетті құру, серверге localhost:12345-ке қосылу
Socket socket = new Socket("localhost", 12345);
System.out.println("Серверге қосылды.");
// Мәліметтерді жіберу үшін шығу ағынын алу
OutputStream outputStream = socket.getOutputStream();
String message = "Клиенттен сәлем!";
outputStream.write(message.getBytes()); // Мәліметтерді жіберу
// Сокетті жабу
socket.close();
System.out.println("Сокет жабылды.");
} catch (Exception e) {
e.printStackTrace();
}
}
}