6 Ekim 2016 Perşembe

Socket Sınıfı

Giriş
Bu sınıf TCP istemci soketi içindir. TCP sunucu soketi için ServerSocket sınıfı kullanılır. UDP istemci ve sunucu soketi için DatagramSocket sınıfı kullanılır.

Bu sınıfı kullanmak için şu satırı dahil ederiz.
import java.net.Socket;
constructor
Şöyle yaparız. Bağlanmak için connect() metodu çağrılır.
Socket clientSocket = new Socket();
constructor - IP + Port
Şöyle yaparız. Bu durumd a connect() metodunu çağırmamıza gerek kalmaz.
Socket clientSocket = new Socket("10.0.10.1", 445);
InetAddress de verebiliriz.
InetAddress serverAddr = InetAddress.getByName("192.168.0.131");
Socket clientSocket = new Socket(serverAddr, 8080);
Socket bağlanınca debug penceresinden şuna benzer bir çıktı görürüz.
Socket[addr=www.nba.com/2.21.246.97,port=80,localport=7846]
close metodu
Socket'i kapatır.
clientSocket.close();
connect metodu
Belirtilen IP adresine bağlanmak için şöyle yaparız.
String ip = ...;
InetSocketAddress sa = new InetSocketAddress(ip, 52000);
Socket clientSocket = new Socket();
clientSocket.connect(sa);
Timeout verilebilir. Şöyle yaparız.
String address = ...;
int port = ...;
int timeout = 5000;

try {
  ...
  clientSocket.connect(new InetSocketAddress(address, port), timeout);
  ...
} catch (Exception e) {
  ...
}
getInetAddress metodu
Şöyle yaparız.
InetAddress remoteAddress = clientSocket.getInetAddress();
getInputStream metodu
String okumak için şöyle yapılır. Önce InputStream bir Reader ile sarmalanır. Daha sonra Reader BufferedReader ile sarmalanır.
InputStreamReader reader = new InputStreamReader(clientSocket.getInputStream());
BufferedReader bufferedReader = new BufferedReader(reader);
string message = bufferedReader.readLine();
Eğer okunacak verinin uzunluğunu tam olarak biliyorsak DataInputStream.readFully() kullanılabilir.
DataInputStream iStream = new DataInputStream(sock.getInputStream());
byte[] buf = new byte[100000];
iStream.readFully(buf);
UTF veri okumak için yine DataInputStream kullanılabilir.
String line = iStream.readUTF();
getOutputStream 
Açıklaması şöyle
Closing the returned OutputStream will close the associated socket.
getOutputStream - DataOutputStream
UTF veri göndermek için DataOutputStream kullanılabilir.
DataOutputStream dos = new DataOutputStream (clientSocket.getOutputStream());
getOutputStream - PrintWriter
String göndermek için şöyle yaparız.
String str = ...;
PrintWriter writer = new PrintWriter (clientSocket.getOutputStream(), true);
writer.println (str);
writer.flush ();
writer.close ();
getOutputStream - PrintStream
Şöyle yaparız.
String str = ...;
OutputStream out = clientSocket.getOutputStream();
PrintStream pout = new PrintStream (out);

pout.print (str);
out.flush ();
out.close ();
isConnected metodu
Socket'in bağlı olup olmadığını döndürür.
if (!clientSocket.isConnected()){...}

setKeepAlive metodu
Şöyle yaparız.
clientSocket.setKeepAlive(true);




Hiç yorum yok:

Yorum Gönder