kostenloser Webspace werbefrei: lima-city


Netzwerkapplikationen unter C/C++

lima-cityForumProgrammiersprachenC/C++ und D

  1. wie bindet man solche dateien denn ein? :confused:
    ?brigens habe ich kein MSDN!:frown:

    EDIT: Hab ich gerade herausgefunden!:smile: Danke!
    und wie kann man z.B. Nachrichten mit einem anderen prog an den client senden?:rolleyes:

    Beitrag ge?ndert am 9.12 18:52 von ands
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 0******a

    ands schrieb:
    ?brigens habe ich kein MSDN!:frown:

    Es gibt eine kostenlose Online Version der MSDN. Ich habe dir schon mal die entsprechende Stelle mit der Winsock ?bersicht rausgesucht:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/winsock_functions.asp



    ands schrieb:
    und wie kann man z.B. Nachrichten mit einem anderen prog an den client senden?:rolleyes:

    Gar nicht, das ist halt nur ein Client, der nicht von sich aus auf die Verbindungen von anderen Programmen wartet. Deswegen unterscheidet man ja auch in Server und Clients.
    Falls du zu einem Serverprogramm auch ein Beispiel brauchst, schreib nochmal.
  4. ja, ich brauche jetzt noch nen server-prog:biggrin:
    es gibt zwar eins in den tuts, aber
    1. funzt net
    2. undeutlich:slant:
  5. 0******a

    War das von mir denn in Ordnung? Wenn es dir weitergeholfen hat, dann werde ich dir morgen in der selben Form einfach mal das Gegenst?ck zum Client (also den Server) machen.

  6. War das von mir denn in Ordnung? Wenn es dir weitergeholfen hat, dann werde ich dir morgen in der selben Form einfach mal das Gegenst?ck zum Client (also den Server) machen.


    nat?rlich hat es geholfen - danke! :biggrin:
    endlich bin ich auch diese nervigen fehler los!:tongue:

    kann mir denn keiner mehr helfen?:confused:

    Beitrag ge?ndert am 11.12 09:14 von ands
  7. 0******a

    #include <winsock2.h>
    #include <stdio.h>

    char * GetDate(void)
    {
    &nbsp;&nbsp;&nbsp;return "12 DEC 2004 14:13:07 MET";
    }

    int main()
    {
    &nbsp;&nbsp;&nbsp;unsigned short int usPort = 13;
    &nbsp;&nbsp;&nbsp;WSADATA stWSA;
    &nbsp;&nbsp;&nbsp;SOCKET tdSock;
    &nbsp;&nbsp;&nbsp;SOCKET tdRespSock;
    &nbsp;&nbsp;&nbsp;struct sockaddr_in stSockAddr;
    &nbsp;&nbsp;&nbsp;int iRet;

    &nbsp;&nbsp;&nbsp;WSAStartup(MAKEWORD(2,0), &stWSA);

    &nbsp;&nbsp;&nbsp;tdSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

    &nbsp;&nbsp;&nbsp;if (tdSock == INVALID_SOCKET)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;

    &nbsp;&nbsp;&nbsp;memset(&stSockAddr, 0, sizeof(SOCKADDR_IN));
    &nbsp;&nbsp;&nbsp;stSockAddr.sin_family = PF_INET;
    &nbsp;&nbsp;&nbsp;stSockAddr.sin_port = htons(usPort);
    &nbsp;&nbsp;&nbsp;stSockAddr.sin_addr.S_un.S_addr = inet_addr("0.0.0.0");

    &nbsp;&nbsp;&nbsp;iRet = bind(tdSock, (PSOCKADDR) &stSockAddr, sizeof(stSockAddr));
    &nbsp;&nbsp;&nbsp;if (iRet == SOCKET_ERROR)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;

    &nbsp;&nbsp;&nbsp;if (listen(tdSock, SOMAXCONN) == SOCKET_ERROR)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;

    &nbsp;&nbsp;&nbsp;while (1)
    &nbsp;&nbsp;&nbsp;{
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tdRespSock = accept(tdSock, NULL, NULL);

    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (tdRespSock == INVALID_SOCKET)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;

    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(tdRespSock, GetDate(), 24, 0);
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closesocket(tdRespSock);
    &nbsp;&nbsp;&nbsp;}
    &nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;closesocket(tdSock);
    &nbsp;&nbsp;&nbsp;WSACleanup();

    &nbsp;&nbsp;&nbsp;return 0;
    }


    Damit das Ganze funktioniert, musst du dir noch eine Funktion GetTime() schreiben, die immer eine Zeichkette der L?nge 24 mit dem aktuellen Datum und der aktuellen Uhrzeit zur?ckliefert. Die, die ich hier geschrieben habe liefert ja immer nur das gleiche zur?ck.
    Wenn du den Server ausprobieren willst, musst du in dem Clientprogramm dazu die IP Adresse deines Rechners eintragen (oder einfach "127.0.0.1").


    Beim Server werden noch einige andere Funktionen benutzt, die im Client nicht benutzt wurden.
    Das sind bind(), listen() und accept().
    bind() bestimmt, auf welchem Port der Server auf Anforderungen von Clients wartet.
    listen() beginnt das Horchen auf dem Socket.
    accept() wartet bis eine Verbindung auf dem Port aufgebaut wird und liefert dann zur Kommunikation mit dem Client einen weiteren Sockethandle zur?ck.
    Nachdem in der while Schleife dem Client das "aktuelle" Datum geschickt wurde, wird der von accept() zur?ckgelieferte Socket geschlossen und accept geht wieder in Wartestellung.
    Mit dem "0.0.0.0" in diesem Zusammenhang gibt man ?brigens an, auf allen Netzwerkschnittstellen zu horchen. Wenn man will, das Verbindungen nur akzeptiert werden, die vom eigenen Rechner aus hergestellt werden, muss man einfach "127.0.0.1" angeben. Um nur auf einer bestimmten Netzwerkschnittstelle zu horchen muss man einfach die IP Adresse dieser bestimmten Netzwerkschnittstelle angeben.
  8. ok! - vielen dank!!!
    aber - wei?t du, wie man das mit MFC so macht, dass er automatisch immer versucht, etwas zu empfangen? (ohne, dass man auf irgendwelche buttons oder so klicken muss??)
  9. 0******a

    Die Klasse in der MFC, mit der du einen eigenen Server und/oder einen Client erstellen kannst in CAsyncSocket. Wie der Name schon andeutet, arbeitet die Klasse asynchron. Infos ?ber die Klasse findest du in der MSDN.
    Falls du noch Fragen zu der MFC Klasse haben solltest, mach daf?r ein neues Thema auf.
  10. ich wollte f?r die letzte frage keinen neuen thread aufmachen - also:
    wo finde ich denn das "MSDN":confused:
  11. 0******a

    http://msdn.microsoft.com/library
    H?ttest du aber auch an dem Link paar Beitr?ge vorher sehen k?nnen. N?chstes Mal auf jeden Fall ein neues Thema aufmachen, sonst wird der Beitrag gel?scht. Hier sollten nur Fragen bzw. Antworten zu Netzwerkapplikationen drin stehen!
  12. mein code l?sst sich zwar compilieren, aber funktioniert nicht.
    ich arbeite mit visual c++. Kann mir da wer helfen?
    Server-Prog:

    void CSocketsimpelDlg::OnConnect()
    {
    if(m_sMySocket.Create(4000)){m_list.AddString("Socket erstellt");}
    if(m_sMySocket.Listen()){m_list.AddString("H?ren...");}
    }

    void CSocketsimpelDlg::OnReceive()
    {
    char *pBuf = new char[1025];
    int iBufSize = 1024;
    int iRcvd;
    CString strRecvd;
    iRcvd = m_sMySocket.Receive(pBuf, iBufSize);
    if (iRcvd != SOCKET_ERROR){
    pBuf[iRcvd] = NULL;
    strRecvd = pBuf;
    m_list.AddString(strRecvd);
    }
    }


    CLIENT-PROG:

    void CSocketsimpelclientDlg::OnSend()
    {
    UpdateData(TRUE);
    int iLen;
    int iAmtSent;
    iLen = m_msg.GetLength();
    iAmtSent = m_sMySocket.Send(LPCTSTR(m_msg), iLen);
    }

    void CSocketsimpelclientDlg::OnConnect()
    {
    UpdateData(TRUE);
    if (m_sMySocket.Create()){MessageBox("Verbindung erstellt!");}
    m_sMySocket.Connect(m_ip, 4000);
    if (m_sMySocket.Accept(m_sMySecondSocket)){MessageBox("Verbunden!");}
    }

    Beitrag ge?ndert am 15.12 07:21 von ands
  13. 0******a

    Was hat das Accept() im Client Programm zu suchen? Das muss in das Server Programm in die ?berschriebene Funktion OnAccept().
    So habe ich dir das aber nicht beigebracht ;-)

  14. Was hat das Accept() im Client Programm zu suchen? Das muss in das Server Programm in die ?berschriebene Funktion OnAccept().
    So habe ich dir das aber nicht beigebracht ;-)

    schuldigung - mein fehler!

    aber - wie kann ich machen, dass er im hintergrund mit Accept() immer auf die verbindung wartet?

    und wieso empf?ngt das server-programm keine Nachricht, wenn ich sie beim clienten sende???

    Beitrag ge?ndert am 15.12 16:14 von ands
  15. 0******a

    Kannst du mal die Headerdateien mit den Klassendefinitionen f?r Server und Client posten? Ich habe da so einen bestimmten Verdacht...
  16. SERVER
    #include "stdafx.h"
    #include "socketsimpel.h"
    #include "socketsimpelDlg.h"

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif

    /////////////////////////////////////////////////////////////////////////////
    // CAboutDlg dialog used for App About

    class CAboutDlg : public CDialog
    {
    public:
    CAboutDlg();
    // Dialog Data
    //{{AFX_DATA(CAboutDlg)
    enum { IDD = IDD_ABOUTBOX };
    //}}AFX_DATA

    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CAboutDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
    //}}AFX_VIRTUAL

    // Implementation
    protected:
    //{{AFX_MSG(CAboutDlg)
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
    };

    CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
    {
    //{{AFX_DATA_INIT(CAboutDlg)
    //}}AFX_DATA_INIT
    }

    void CAboutDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CAboutDlg)
    //}}AFX_DATA_MAP
    }

    BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    //{{AFX_MSG_MAP(CAboutDlg)
    // No message handlers
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    /////////////////////////////////////////////////////////////////////////////
    // CSocketsimpelDlg dialog

    CSocketsimpelDlg::CSocketsimpelDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CSocketsimpelDlg::IDD, pParent)
    {
    //{{AFX_DATA_INIT(CSocketsimpelDlg)
    // NOTE: the ClassWizard will add member initialization here
    //}}AFX_DATA_INIT
    // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }

    void CSocketsimpelDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CSocketsimpelDlg)
    DDX_Control(pDX, IDC_CHAT, m_chat);
    //}}AFX_DATA_MAP
    }

    BEGIN_MESSAGE_MAP(CSocketsimpelDlg, CDialog)
    //{{AFX_MSG_MAP(CSocketsimpelDlg)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_START, OnStart)
    ON_BN_CLICKED(IDC_GET, OnGet)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    /////////////////////////////////////////////////////////////////////////////
    // CSocketsimpelDlg message handlers

    BOOL CSocketsimpelDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();

    // Add "About..." menu item to system menu.

    // IDM_ABOUTBOX must be in the system command range.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
    CString strAboutMenu;
    strAboutMenu.LoadString(IDS_ABOUTBOX);
    if (!strAboutMenu.IsEmpty())
    {
    pSysMenu->AppendMenu(MF_SEPARATOR);
    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    }
    }

    // Set the icon for this dialog. The framework does this automatically
    // when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE); // Set big icon
    SetIcon(m_hIcon, FALSE); // Set small icon

    // TODO: Add extra initialization here

    return TRUE; // return TRUE unless you set the focus to a control
    }

    void CSocketsimpelDlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
    CAboutDlg dlgAbout;
    dlgAbout.DoModal();
    }
    else
    {
    CDialog::OnSysCommand(nID, lParam);
    }
    }

    // If you add a minimize button to your dialog, you will need the code below
    // to draw the icon. For MFC applications using the document/view model,
    // this is automatically done for you by the framework.

    void CSocketsimpelDlg::OnPaint()
    {
    if (IsIconic())
    {
    CPaintDC dc(this); // device context for painting

    SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

    // Center icon in client rectangle
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2;

    // Draw the icon
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialog::OnPaint();
    }
    }

    // The system calls this to obtain the cursor to display while the user drags
    // the minimized window.
    HCURSOR CSocketsimpelDlg::OnQueryDragIcon()
    {
    return (HCURSOR) m_hIcon;
    }

    CLIENT
    // socketsimpelclientDlg.cpp : implementation file
    //

    #include "stdafx.h"
    #include "socketsimpelclient.h"
    #include "socketsimpelclientDlg.h"

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif

    /////////////////////////////////////////////////////////////////////////////
    // CAboutDlg dialog used for App About

    class CAboutDlg : public CDialog
    {
    public:
    CAboutDlg();

    // Dialog Data
    //{{AFX_DATA(CAboutDlg)
    enum { IDD = IDD_ABOUTBOX };
    //}}AFX_DATA

    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CAboutDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
    //}}AFX_VIRTUAL

    // Implementation
    protected:
    //{{AFX_MSG(CAboutDlg)
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
    };

    CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
    {
    //{{AFX_DATA_INIT(CAboutDlg)
    //}}AFX_DATA_INIT
    }

    void CAboutDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CAboutDlg)
    //}}AFX_DATA_MAP
    }

    BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    //{{AFX_MSG_MAP(CAboutDlg)
    // No message handlers
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    /////////////////////////////////////////////////////////////////////////////
    // CSocketsimpelclientDlg dialog

    CSocketsimpelclientDlg::CSocketsimpelclientDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CSocketsimpelclientDlg::IDD, pParent)
    {
    //{{AFX_DATA_INIT(CSocketsimpelclientDlg)
    m_ip = _T("");
    m_msg = _T("");
    //}}AFX_DATA_INIT
    // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }

    void CSocketsimpelclientDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CSocketsimpelclientDlg)
    DDX_Text(pDX, IDC_IP, m_ip);
    DDX_Text(pDX, IDC_MSG, m_msg);
    //}}AFX_DATA_MAP
    }

    BEGIN_MESSAGE_MAP(CSocketsimpelclientDlg, CDialog)
    //{{AFX_MSG_MAP(CSocketsimpelclientDlg)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_SEND, OnSend)
    ON_BN_CLICKED(IDC_CONNECT, OnConnect)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    /////////////////////////////////////////////////////////////////////////////
    // CSocketsimpelclientDlg message handlers

    BOOL CSocketsimpelclientDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();

    // Add "About..." menu item to system menu.

    // IDM_ABOUTBOX must be in the system command range.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
    CString strAboutMenu;
    strAboutMenu.LoadString(IDS_ABOUTBOX);
    if (!strAboutMenu.IsEmpty())
    {
    pSysMenu->AppendMenu(MF_SEPARATOR);
    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    }
    }

    // Set the icon for this dialog. The framework does this automatically
    // when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE); // Set big icon
    SetIcon(m_hIcon, FALSE); // Set small icon

    // TODO: Add extra initialization here

    return TRUE; // return TRUE unless you set the focus to a control
    }

    void CSocketsimpelclientDlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
    CAboutDlg dlgAbout;
    dlgAbout.DoModal();
    }
    else
    {
    CDialog::OnSysCommand(nID, lParam);
    }
    }

    // If you add a minimize button to your dialog, you will need the code below
    // to draw the icon. For MFC applications using the document/view model,
    // this is automatically done for you by the framework.

    void CSocketsimpelclientDlg::OnPaint()
    {
    if (IsIconic())
    {
    CPaintDC dc(this); // device context for painting

    SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

    // Center icon in client rectangle
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2;

    // Draw the icon
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialog::OnPaint();
    }
    }

    // The system calls this to obtain the cursor to display while the user drags
    // the minimized window.
    HCURSOR CSocketsimpelclientDlg::OnQueryDragIcon()
    {
    return (HCURSOR) m_hIcon;
    }

    (ich wei?, dass die namen der dateien ein bisschen komisch klingen...):biggrin:
  17. kannst du mir nun helfen oder nicht???
    - was ist mit deinem verdacht?
  18. 0******a

    Nein, ich kann dir da nicht helfen. Der Grund ist ganz einfach: du hast weder im Client Programm noch im Serverprogramm die entsprechenden Stellen mit den Socketfunktionen gepostet. Statt dessen hast du die ganzen unwichtigen Teile (wie zum Beispiel die Teile zur Generierung des "About"-Dialoges gepostet. Auch die Headerdateien sind von dir nicht gepostet worden. So kann dir leider niemand weiterhelfen.
  19. Server:
    class CSocketsimpelDlg : public CDialog
    {
    // Construction
    public:
    &nbsp;&nbsp;&nbsp;//{{AFX_DATA(CSocketsimpelDlg)
    &nbsp;&nbsp;&nbsp;CListBox&nbsp;&nbsp;&nbsp;m_chat;
    &nbsp;&nbsp;&nbsp;//}}AFX_DATA

    // Implementation
    protected:
    &nbsp;&nbsp;&nbsp;//{{AFX_MSG(CSocketsimpelDlg)
    &nbsp;&nbsp;&nbsp;afx_msg void OnStart();
    &nbsp;&nbsp;&nbsp;afx_msg void OnGet();
    &nbsp;&nbsp;&nbsp;//}}AFX_MSG
    &nbsp;&nbsp;&nbsp;DECLARE_MESSAGE_MAP()

    public:
    &nbsp;&nbsp;&nbsp;CAsyncSocket m_sMySocket;
    &nbsp;&nbsp;&nbsp;CAsyncSocket m_sMySecondSocket;
    };



    CSocketsimpelDlg::CSocketsimpelDlg(CWnd* pParent /*=NULL*/)
    &nbsp;&nbsp;&nbsp;: CDialog(CSocketsimpelDlg::IDD, pParent)
    {
    }

    BEGIN_MESSAGE_MAP(CSocketsimpelDlg, CDialog)
    &nbsp;&nbsp;&nbsp;//{{AFX_MSG_MAP(CSocketsimpelDlg)
    &nbsp;&nbsp;&nbsp;ON_BN_CLICKED(IDC_START, OnStart)
    &nbsp;&nbsp;&nbsp;ON_BN_CLICKED(IDC_GET, OnGet)
    &nbsp;&nbsp;&nbsp;//}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    void CSocketsimpelDlg::OnStart()
    {
    &nbsp;&nbsp;&nbsp;if (m_sMySocket.Create(1234))
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_chat.AddString("Socket erstellt");
    &nbsp;&nbsp;&nbsp;if (m_sMySocket.Listen())
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_chat.AddString("H?ren...");
    &nbsp;&nbsp;&nbsp;while(1)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if
    (m_sMySocket.Accept(m_sMySecondSocket))
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_chat.AddString("Verb
    unden!");
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
    }

    void CSocketsimpelDlg::OnGet()
    {
    &nbsp;&nbsp;&nbsp;char *pBuf = new char[1025];
    &nbsp;&nbsp;&nbsp;int iBufSize = 1024;
    &nbsp;&nbsp;&nbsp;int iRcvd;
    &nbsp;&nbsp;&nbsp;CString strRecvd;

    &nbsp;&nbsp;&nbsp;iRcvd = m_sMySocket.Receive(pBuf, iBufSize);
    &nbsp;&nbsp;&nbsp;pBuf[iRcvd] = NULL;
    &nbsp;&nbsp;&nbsp;strRecvd = pBuf;
    &nbsp;&nbsp;&nbsp;MessageBox(strRecvd);
    &nbsp;&nbsp;&nbsp;m_chat.AddString("MSG: "+strRecvd);
    &nbsp;&nbsp;&nbsp;UpdateData(FALSE);
    }



    -----------------------------------

    Client:
    class CSocketsimpelclientDlg : public CDialog
    {
    public:
    &nbsp;&nbsp;&nbsp;//{{AFX_DATA(CSocketsimpelclientDlg)
    &nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp;&nbsp;m_ip;
    &nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp;&nbsp;m_msg;
    &nbsp;&nbsp;&nbsp;//}}AFX_DATA

    protected:
    &nbsp;&nbsp;&nbsp;//{{AFX_MSG(CSocketsimpelclientDlg)
    &nbsp;&nbsp;&nbsp;afx_msg void OnSend();
    &nbsp;&nbsp;&nbsp;afx_msg void OnConnect();
    &nbsp;&nbsp;&nbsp;//}}AFX_MSG
    &nbsp;&nbsp;&nbsp;DECLARE_MESSAGE_MAP()
    public:
    CAsyncSocket m_sMySocket;
    };



    CSocketsimpelclientDlg::CSocketsimpelclientDlg(CWnd* pParent /*=NULL*/)
    &nbsp;&nbsp;&nbsp;: CDialog(CSocketsimpelclientDlg::IDD, pParent)
    {
    &nbsp;&nbsp;&nbsp;//{{AFX_DATA_INIT(CSocketsimpelclientDlg)
    &nbsp;&nbsp;&nbsp;m_ip = _T("");
    &nbsp;&nbsp;&nbsp;m_msg = _T("");
    &nbsp;&nbsp;&nbsp;//}}AFX_DATA_INIT
    }

    BEGIN_MESSAGE_MAP(CSocketsimpelclientDlg, CDialog)
    &nbsp;&nbsp;&nbsp;//{{AFX_MSG_MAP(CSocketsimpelclientDlg)
    &nbsp;&nbsp;&nbsp;ON_BN_CLICKED(IDC_SEND, OnSend)
    &nbsp;&nbsp;&nbsp;ON_BN_CLICKED(IDC_CONNECT, OnConnect)
    &nbsp;&nbsp;&nbsp;//}}AFX_MSG_MAP
    END_MESSAGE_MAP()


    void CSocketsimpelclientDlg::OnSend()
    {
    &nbsp;&nbsp;&nbsp;UpdateData(TRUE);
    &nbsp;&nbsp;&nbsp;int iLen;
    &nbsp;&nbsp;&nbsp;int iSent;
    &nbsp;&nbsp;&nbsp;iLen = m_msg.GetLength();
    &nbsp;&nbsp;&nbsp;iSent = m_sMySocket.Send(LPCTSTR(m_msg), iLen);
    }

    void CSocketsimpelclientDlg::OnConnect()
    {
    &nbsp;&nbsp;&nbsp;UpdateData(TRUE);
    &nbsp;&nbsp;&nbsp;if (m_sMySocket.Create())
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox("Verbindung erstellt!");
    &nbsp;&nbsp;&nbsp;m_sMySocket.Connect(m_ip, 1234);&nbsp;&nbsp;&nbsp;
    }

    so! - dass jetzt aber richtig!?!:wow:
  20. 0******a

    In welcher Reihenfolge dr?ckst du denn die jeweils zwei Buttons bei Client und Server?
  21. erst wird OnStart() ausgef?hrt (server)
    anschlie?end OnConnect() (client)
    dann OnSend() (client)
    und dann OnGet() (server)

    (die daten (ip, nachricht) sind auf jeden fall richtig angegeben!!)
    ich kann mit dem clienten zum server connecten, der server merkt das auch, aber dann kann man nichts senden/empfangen!
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!