Вместе со всеми комментариями к учетным данным я обнаружил, что базовая аутентификация заблокирована в некоторых репозиториях.
Я считаю, что лучше всего создать Личный токен доступа (PAT) в хранилище. Затем используйте это в своих соединениях для доступа к API.
Пример, чтобы прочитать, какие проекты находятся в коллекции репозитория tfs / devops по умолчанию:
string PAT = "Put PAT String Here";
string RepoStore = "https://url of repo here";
string responseBody = "";
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(
new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
Convert.ToBase64String(
System.Text.ASCIIEncoding.ASCII.GetBytes(
string.Format("{0}:{1}", "", PAT))));
using (HttpResponseMessage response = client.GetAsync(
RepoStore + "/_apis/projects").Result)
{
response.EnsureSuccessStatusCode();
responseBody = await response.Content.ReadAsStringAsync();
}
Console.WriteLine(responseBody);
}
Console.ReadKey();
Вот использование отрывка select
:
FD_ZERO(&masterfds);
FD_SET(sockfd,&masterfds);
memcpy(&readfds,&masterfds,sizeof(fd_set));
timeout.tv_sec = 2;
timeout.tv_usec = 0;
if (select(sockfd+1, &readfds, NULL, NULL, &timeout) < 0)
{
printf("select error");
exit(1);
}
if (FD_ISSET(sockfd, &readfds))
{
//printf("Read from socket\n");
// read from the socket
res = recvfrom(sockfd, (char *)hdrbuf, sizeof(hdrbuf), MSG_PEEK, recvaddr, address_len);
}
else
{
// the socket timedout
//printf("Socket timeout started=%d\n",packets_started);
На каком сокете Вы хотите иметь один второй тайм-аут? Соединения принятия или то, установленное, принимают ()?
Я принял бы последнего - так попытайтесь установить получить тайм-аут на clientfd ПОСЛЕ принять возвратов. Можно также добраться туда, где необходимо использовать выбор, но Вы не должны должны быть.
Попытайтесь использовать выбор () прежде, чем назвать recv () или примите ().
выберите (), берет массив дескрипторов файлов (includinig сокеты) и возвращается, когда по крайней мере один из них готов получить. Это может также возвратиться на тайм-ауте.
В Linux можно также попробовать опрос () (не уверенный, если Winsock обеспечивает это).