Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uygulama, WinINet işlevlerini kullanmadan önce internete InternetAttemptConnect işlevini kullanarak bir bağlantı kurmaya çalışmalıdır. Bu işlev, İnternet bağlantısı başlatmak veya bir bağlantının zaten var olup olmadığını denetlemek için çevirmeli iletişim kutusunu çağırır. Bu işlev başarısız olursa, uygulama çevrimdışı moda girebilir ve bu da İnternet'e yapılan önceki bağlantılar sırasında önbelleğe alınan bilgilere erişmesine olanak tanır.
İnternet bağlantısını denetlemek için InternetCheckConnection işlevini kullanın. İşleve geçirilen URL tarafından belirlenen sunucuya ping işlemi yapmaya çalışır. FLAG_ICC_FORCE_CONNECTION bayrağı ayarlanırsa ve URL NULLise, işlev en yakın sunucu için sunucu veritabanında bir giriş olup olmadığını denetler. Varsa, işlev bu sunucuya ping gönderir.
Ardından, istemci uygulamasının kullandığı İnternet bağlantısının özelliklerini oluşturmak için InternetOpen işlevini kullanın. InternetOpen, kök HINTERNET tanıtıcısını oluşturur ve http ile ftp oturumları kurmak için kullanılır. InternetOpen, işleve geçirilen özelliklerin doğru olduğunu doğrulamak için İnternet bağlantısını test etmez.
Belirli bir oturum oluşturmak için InternetConnect işlevini kullanın. InternetConnect, belirtilen site için geçirilen bağımsız değişkenleri kullanarak bir oturum başlatır ve kök tanıtıcıdan bir dal olan bir HINTERNET tanıtıcısı oluşturur. InternetConnect, FTP oturumu dışında belirtilen siteye erişmeye veya bu siteye bağlantı kurmaya çalışmaz. FtpFindFirstFile, FtpOpenFileve httpOpenRequest işlevleri, belirtilen siteyle bağlantı kurmak için InternetConnect tarafından oluşturulan tanıtıcıyı kullanır.
InternetOpen kullanma
İnternet bağlantısını etkinleştirmek için, InternetOpenkullanılarak bir kök HINTERNET tanıtıcısı oluşturulmalıdır. Kullanıcı aracısı (İnternet işlevlerini çağıran uygulama), İnternet'e erişim türü, ara sunucu adları, proxy'yi atlayan konaklar ve adresler hakkındaki bilgiler ve davranış InternetOpen'a geçirilir.
Kullanıcı Aracısını Ayarlama
Çağıran uygulama, internete erişen uygulamanın veya varlığın adını içeren bir dizeyi, lpszAgent parametresi olarak InternetOpenfonksiyonuna vermelidir. Bu dize, HTTP protokolünde kullanıcı aracısı olarak kullanılır. Örneğin, Microsoft Internet Explorer "Microsoft Internet Explorer" kullanır.
Erişim Türlerini Ayarlama
InternetOpen üç erişim türünü destekler:
- Uygulamanın üzerinde çalıştığı sistem İnternet'e doğrudan bağlantı kullanıyorsa INTERNET_OPEN_TYPE_DIRECT kullanın. InternetOpenlpszProxyName ve lpszProxyBypass parametreleri kullanılmaz ve NULLolarak ayarlanmalıdır.
- Uygulamanın üzerinde çalıştığı sistem İnternet'e erişmek için bir veya daha fazla ara sunucu kullanıyorsa INTERNET_OPEN_TYPE_PROXY kullanın. InternetOpen, lpszProxyName tarafından belirtilen ara sunucuları kullanır ve lpszProxyBypasstarafından belirtilen tüm ana bilgisayar adları veya IP adresleri için ara sunucuyu atlar.
- Uygulamanıza kayıt defterinden yapılandırmayı almasını bildirmek için INTERNET_OPEN_TYPE_PRECONFIG kullanın. Web tarayıcıları da dahil olmak üzere çoğu uygulama bu seçeneği kullandığından bu genellikle en iyi seçenektir.
INTERNET_OPEN_TYPE_PRECONFIG ProxyEnable , ProxyServerve ProxyOverridekayıt defteri değerlerine bakar. Bu değerler "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" altında bulunur.
ProxyEnable sıfırsa, uygulama INTERNET_OPEN_TYPE_DIRECT kullanır. Aksi takdirde, uygulama INTERNET_OPEN_TYPE_PROXY kullanır ve ProxyServer ve ProxyOverride bilgilerini kullanır.
WinINet işlevleri, yalnızca Internet Explorer yüklüyse SOCKS türü proxy'ler için destek sağlar. Internet Explorer yüklemesi, SOCKS proxy'lerini desteklemek için gereken Wsock32n.dll dosyasını içerir. Wsock32n.dll yeniden dağıtılamaz.
Proxy Sunucularını Listeleme
WinINet iki tür proxy tanır: CERN türü proxy'ler (yalnızca HTTP) ve TIS FTP proxy'leri (yalnızca FTP). Internet Explorer yüklüyse WinINet, SOCKS türü proxy'leri de destekler. InternetConnect varsayılan olarak belirtilen proxy'nin bir CERN proxy'si olduğunu varsayar. Erişim türü INTERNET_OPEN_TYPE_DIRECT veya INTERNET_OPEN_TYPE_PRECONFIG olarak ayarlanırsa, InternetOpenlpszProxyName parametresi NULLolarak ayarlanmalıdır. Aksi takdirde, lpszProxyName verilen değerin ara sunucuları boşlukla ayrılmış bir dizede içermesi gerekir. Ara sunucu listeleri ara sunucuya erişmek için kullanılan bağlantı noktası numarasını içerebilir.
Belirli bir protokolün ara sunucusunu listelemek için dizenin " " "<protokol><protokol>://<proxy_name>"" biçimini izlemesi gerekir. Geçerli protokoller HTTP, HTTPS ve FTP'dir. Örneğin, bir FTP ara sunucusunu listelemek için geçerli bir dize ""ftp=ftp://ftp_proxy_name:21"" olur; burada ftp_proxy_name FTP ara sunucusunun adıdır ve 21, ara sunucuya erişmek için kullanılması gereken bağlantı noktası numarasıdır. Ara sunucu bu protokol için varsayılan bağlantı noktası numarasını kullanıyorsa, bağlantı noktası numarası atlanabilir. Bir ara sunucu adı tek başına listeleniyorsa, belirli bir ara sunucu belirtilmemiş protokoller için varsayılan ara sunucu olarak kullanılır. Örneğin, ""http=https://http_proxy other"" tüm HTTP işlemleri için http_proxy kullanırken diğer tüm protokoller diğer protokolleri kullanır.
varsayılan olarak işlev, lpszProxyName tarafından belirtilen proxy'nin bir CERN proxy'si olduğunu varsayar. Bir uygulama, farklı protokoller için farklı proxy'ler de dahil olmak üzere birden fazla proxy belirtebilir. Örneğin, ""ftp=ftp://ftp-gw HTTP=https://jericho:99 proxy"" belirtirseniz, FTP istekleri 21 numaralı bağlantı noktasını dinleyen ftp-gw ara sunucusu üzerinden yapılır ve HTTP istekleri 99 numaralı bağlantı noktasını dinleyen jericho adlı bir CERN proxy'si aracılığıyla yapılır. Aksi halde, HTTP istekleri, 80 numaralı bağlantı noktasını dinleyen "proxy" adlı CERN proxy'si aracılığıyla yapılır. Uygulama yalnızca FTP kullanıyorsa, örneğin ""ftp=ftp://ftp-gw:21"" belirtmesi gerekmeyeceğini unutmayın. Yalnızca ""ftp-gw"" belirtebilir. Bir uygulamanın, yalnızca InternetOpentarafından döndürülen tanıtıcı başına birden fazla protokol kullanıyorsa, protokol adlarını belirtmesi gerekir.
Proxy Atlamasını Listeleme
Ara sunucuya gönderilmemesi gereken ana bilgisayar adları veya IP adresleri ara sunucu atlama listesinde listelenebilir. Bu liste, uygulamanın belirtilen desene uyan adresler için ara sunucuyu atlamasına neden olan "*" joker karakterlerini içerebilir. Birden çok adres ve ana bilgisayar adını listelemek için bunları proxy atlama dizesinde noktalı virgülle ayırın. "<yerel>" makro belirtildiyse, işlev nokta içermeyen herhangi bir ana bilgisayar adı için ara sunucuyu atlar.
Varsayılan olarak, WinINet "localhost", "loopback", "127.0.0.1" veya "[::1]" konak adlarını kullanan istekler için ara sunucuyu atlar. Bu davranış, uzak ara sunucu genellikle bu adresleri düzgün çözümleyemediğinden oluşur.
Internet Explorer 9: "<-loopback>" makrosunu kullanarak yerel bilgisayarı proxy atlama listesinden kaldırabilirsiniz.
Aşağıdaki örnek, farklı ara sunucu atlama dizelerini kullanarak InternetOpen'in örnek çağrılarını göstermektedir. Her çağrının üzerindeki açıklamalar, atlama dizesinin oluşturduğu HINTERNET'ten erişilen ana bilgisayar adları üzerindeki etkisini açıklar.
HINTERNET hInternetRoot;
/* bypass the proxy for any host name that does not
contain a period */
hInternetRoot = InternetOpen(TEXT("WinInet Example"),
INTERNET_OPEN_TYPE_PROXY,TEXT("proxy"),TEXT("<local>"), 0);
/* bypass the proxy for any host name that starts with the
letters "ms" */
hInternetRoot = InternetOpen(TEXT("WinInet Example"),
INTERNET_OPEN_TYPE_PROXY,TEXT("proxy"),TEXT("ms*"), 0);
/* bypass the proxy for any host name that contains "int",
such as "internet" and "painter" */
hInternetRoot = InternetOpen(TEXT("WinInet Example"),
INTERNET_OPEN_TYPE_PROXY,TEXT("proxy"),TEXT("*int*"), 0);
/* bypass the proxy for the host name "example" and any
host name that contains "test" */
hInternetRoot = InternetOpen(TEXT("WinInet Example"),
INTERNET_OPEN_TYPE_PROXY,TEXT("proxy"),TEXT("example *test*"), 0);
/* Disable the loopback proxy bypass for localhost */
hInternetRoot = InternetOpen(TEXT("WinInet Example"),
INTERNET_OPEN_TYPE_PROXY,TEXT("127.0.0.1:8888"),TEXT("<-loopback>"), 0);
InternetConnect'i kullanma
Oturumu başlatmak için, InternetConnect işlevinin, InternetOpen işlevi tarafından döndürülen kök tanıtıcıdan bir tanıtıcı oluşturması gerekmektedir. InternetConnect sunucu adresini, bağlantı noktası numarasını, kullanıcı adını, parolayı ve hizmet türünü ayarlar.
InternetConnect, oturum tanıtıcısı oluşturmak için InternetOpen tarafından oluşturulan kök HINTERNET tanıtıcısını kullanır. INTERNET_FLAG_ASYNC bayrağı InternetOpençağrısında ayarlandıysa, InternetConnectçağrısı sıfır olmayan bir bağlam değeri içermelidir.
Sunucu adı, ana bilgisayar adını (örneğin, "www.servername.com") veya sitenin IP numarasını ASCII noktalı ondalık biçiminde (örneğin, "10.0.1.45") içerebilir.
Sunucu bağlantı noktası, sunucuda bağlanacak İletim Denetimi Protokolü/İnternet Protokolü (TCP/IP) bağlantı noktası numarasıdır. InternetConnect, INTERNET_INVALID_PORT_NUMBER değeri kullanılıyorsa seçili hizmet türü için varsayılan bağlantı noktasını kullanır. Aşağıdaki tablolar WinINet için sunucu bağlantı noktası varsayılanlarını içerir.
| Değer | Anlam |
|---|---|
| INTERNET_DEFAULT_FTP_PORT | Ftp sunucuları için varsayılan bağlantı noktasını kullanın (bağlantı noktası 21). |
| INTERNET_DEFAULT_GOPHER_PORT | Gopher sunucuları için varsayılan bağlantı noktasını kullanın (bağlantı noktası 70).
Not: Yalnızca Windows XP, Windows Server 2003 R2 ve daha önceki sürümler içindir. |
| İNTERNET_VARSAYILAN_HTTP_PORTU | Http sunucuları için varsayılan bağlantı noktasını kullanın (bağlantı noktası 80). |
| INTERNET_DEFAULT_HTTPS_PORT | Https sunucuları için varsayılan bağlantı noktasını kullanın (bağlantı noktası 443). |
| INTERNET_DEFAULT_SOCKS_PORT | SOCKS güvenlik duvarı sunucuları için varsayılan bağlantı noktasını kullanın (bağlantı noktası 1080). |
Kullanıcı Adı ve Parolayı Tanımlama
lpszUsername değeri, oturum açan kullanıcının adını içeren nullsonlandırılan dizenin adresidir. Bu parametre NULL ise, işlev HTTP dışında uygun bir varsayılan değer kullanır. HTTP'deki NULL parametresi sunucunun hata döndürmesine neden olur. FTP protokolü için varsayılan değer anonimdir.
lpszPassword değeri, giriş parolasını içeren nullile sonlandırılmış dizenin adresidir. hem lpszUsername hem de lpszPassword NULL ise, işlev varsayılan anonim parolayı kullanır. FTP söz konusu olduğunda, varsayılan anonim parola kullanıcının e-posta adıdır. lpszUsername NULL değilse ve lpszPassword null ise, işlev boş bir parola kullanır. aşağıdaki tabloda gösterilen davranışları oluşturan lpszUsername ve lpszPassworddört olası ayarı vardır.
| lpszUsername | lpszPassword | FTP sunucusuna gönderilen kullanıcı adı | FTP sunucusuna gönderilen parola |
|---|---|---|---|
| NULL | NULL | "anonim" | Kullanıcının e-posta adı |
| NULL olmayan dizesi | NULL | lpszUsername | "" |
| NULL | OLMAYAN NULL dizesi | HATA | HATA |
| OLMAYAN NULL dizesi | OLMAYAN NULL dizesi | lpszUsername | lpszPassword |
Bu bilgiler InternetSetOption ve InternetErrorDlgişlevlerikullanılarak değiştirilebilir. InternetSetOption kullanıcı adı ve parola değerlerini değiştirirken, InternetErrorDlgdoğru kullanıcı adını ve parolayı isteyen bir iletişim kutusu görüntüler.
Oturumu Tanımlama
Kurulan oturumu tanımlamak için, InternetConnectiçin hizmet türünü, bayrakları ve bağlam değerini ayarlayın.
İki hizmet türü mevcuttur InternetConnect: INTERNET_SERVICE_FTP ve INTERNET_SERVICE_HTTP. INTERNET_SERVICE_HTTP hem HTTP hem de HTTPS oturumları için kullanılır.
INTERNET_FLAG_PASSIVE, WinINet işlevleri tarafından kullanılan hizmete özgü tek bayraktır. Bu bayrak, pasif FTP semantiğini kullanmak için hizmet türü INTERNET_SERVICE_FTP olduğunda ayarlanabilir.
Tüm zaman uyumlu işlemler için dwContext değeri sıfır olarak ayarlanmalıdır. InternetOpençağrısında INTERNET_FLAG_ASYNC bayrağı ayarlanarak zaman uyumsuz işlemler oluşturulduysa, dwContextiçin sıfır olmayan bir değer sağlanmalıdır. Zaman uyumsuz işlemler hakkında daha fazla bilgi için bkz. Zaman Uyumsuz İşlemleri Ayarlama.
FTP oturumları için InternetConnect İnternet'te sunucuyla bağlantı kurmaya çalışır. HTTP oturumları için InternetConnect, başka bir işlev sunucudan bilgi almaya çalışana kadar bağlantı kurmaz.
Notu
WinINet, sunucu uygulamalarını desteklemez. Ayrıca, bir hizmet üzerinden kullanılmamalıdır. Sunucu uygulamaları veya hizmetleri için Microsoft Windows HTTP Services (WinHTTP)kullanın.