Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Polikarpic
46 / 46 / 12
Регистрация: 29.06.2011
Сообщений: 174
1

Клиент на C# - подключение к серверу на Си

24.07.2013, 15:16. Просмотров 375. Ответов 0
Метки нет (Все метки)

Доброго времени суток
Пишу клиентское приложение на C#, вместе с сервером на Cи
Проблема в следующем - при попытке подключения к серверу клиент выдает сообщение о истечении времени time-out

Посмотрите, что тут не так

сервер
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <math.h>
 
int main()
{
    int sock;
    int error = 0;
    int len;
    int len1;
    int new_sock;
    char command[30];
    int result;
 
    struct sockaddr_in server;
    struct sockaddr_in client;
    len = sizeof(server);
    len1 = sizeof(client);
    sock = socket(AF_INET, SOCK_STREAM, 0);
 
 
    server.sin_family = AF_INET;
    server.sin_port = htons(1313);
    server.sin_addr.s_addr = INADDR_ANY;
 
    error = bind(sock, (struct sockaddr *) &server, len);
    if(error == -1)
    {
    perror("bind: ");
    return 0;
    }
    error = listen(sock, 150);
    if(error == -1)
    {
    perror("listen: ");
    return 0;
    }
 
    new_sock = accept(sock, (struct sockaddr *) &client, &len1);
    send(new_sock, "Server is ready\n", strlen("Server is ready\n"), 0);
    while(1)
    {
    //  menu(new_sock);
    send(new_sock, "-->", strlen("-->"), 0);
    recv(new_sock, command, 30, 0);
 
    fprintf(stdout, "%s\n", command);
        
    } 
    return 0;
}

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// SocketClient.cs
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
 
namespace SocketClient
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                SendMessageFromSocket(1313);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                Console.ReadLine();
            }
        }
 
        static void SendMessageFromSocket(int port)
        {
            // Буфер для входящих данных
            byte[] bytes = new byte[1024];
 
            // Соединяемся с удаленным устройством
 
             //Устанавливаем удаленную точку для сокета
            IPHostEntry ipHost = Dns.GetHostEntry("194.85.173.14");
            IPAddress ipAddr = ipHost.AddressList[0];
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 1313);
 
            Socket sender = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
 
            // Соединяем сокет с удаленной точкой
            sender.Connect(ipEndPoint);
 
            Console.Write("Введите сообщение: ");
            string message = Console.ReadLine();
 
            Console.WriteLine("Сокет соединяется с {0} ", sender.RemoteEndPoint.ToString());
            byte[] msg = Encoding.UTF8.GetBytes(message);
 
            // Отправляем данные через сокет
            int bytesSent = sender.Send(msg);
 
            // Получаем ответ от сервера
            int bytesRec = sender.Receive(bytes);
 
            Console.WriteLine("\nОтвет от сервера: {0}\n\n", Encoding.UTF8.GetString(bytes, 0, bytesRec));
 
            // Используем рекурсию для неоднократного вызова SendMessageFromSocket()
            if (message.IndexOf("<TheEnd>") == -1)
                SendMessageFromSocket(1313);
 
            // Освобождаем сокет
            sender.Shutdown(SocketShutdown.Both);
            sender.Close();
        }
    }
}
Заранее спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2013, 15:16
Ответы с готовыми решениями:

Не подключается клиент к серверу
Чую, что ошибка тупая, но только начал разбираться с этим всем) Клиент: var...

Клиент не подключаеться к серверу
здравствуйте. написал приложение клиент - сервер. на одном компе нормально работает вроде.... на...

Клиент-серверное приложение не подключается к серверу
По примеру, сделал я сервер и клиент, которые с помощью Socket подключаются друг с другом....

Подключение к удаленному серверу
ни как не могу разобраться. вопрос следующий. Есть локальная сеть, нужно подключить программу с...

Клиент подключается к серверу, List хранит подключенные соединения. Почему они зациклены
Есть Главный и ClientConnection класс. public List&lt;ClientConnection&gt; Clients = new...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2013, 15:16

Какой должен быть ip у сервера чтобы клиент мог отправлять серверу сообщение?
Есть Клиент: // Получение имени компьютера. String host =...

Как проверить подключение клиента к серверу
Пишу чат на TCP протоколе, где пользователи общаются меж собой. Прежде чем войти в чат нужно ввести...

Подключение к серверу, не зная его ip адреса
У меня есть 2 приложения: сервер и клиент. Мне нужно из клиента подключиться к серверу, но ip адрес...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru