C# - Server und Java-Client

Ich versuche zu schreiben, ein kleines client-server Programm. Der Server ist in C#, und der client ist in Java.
Hier sind die codes:

Server:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace Server
{
    class Program
    {
        private TcpListener tcpListener;
        public static void Main(string[] args)
        {
            Program program = new Program();
            program.StartServer();

            while (true) ;
        }

        private bool StartServer()
        {
            IPAddress ipAddress = Dns.GetHostEntry("localhost").AddressList[0];

            try
            {
                tcpListener = new TcpListener(ipAddress, 5678);
                tcpListener.Start();
                tcpListener.BeginAcceptTcpClient(new AsyncCallback(this.ProcessEvents), tcpListener);

                Console.WriteLine("Listing at Port {0}.", 5678);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                return false;
            }

            return true;
        }

        private void ProcessEvents(IAsyncResult asyn)
        {
            try
            {
                TcpListener processListen = (TcpListener)asyn.AsyncState;
                TcpClient tcpClient = processListen.EndAcceptTcpClient(asyn);
                NetworkStream myStream = tcpClient.GetStream();
                if (myStream.CanRead)
                {
                    StreamReader readerStream = new StreamReader(myStream);
                    string myMessage = readerStream.ReadToEnd();
                    readerStream.Close();
                }
                myStream.Close();
                tcpClient.Close();
                tcpListener.BeginAcceptTcpClient(new AsyncCallback(this.ProcessEvents), tcpListener);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
    }
}

Client:

import java.io.PrintWriter;
import java.net.Socket;


public class Program {

    public static void main(String[] args) {
        Socket socket;
        try {
            socket = new Socket( "127.0.0.1", 5678);
            PrintWriter writer = new PrintWriter(socket.getOutputStream());
            writer.print("Hello world");
            writer.flush();
            writer.close();
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

Aber wenn ich versuche einen Socket zu erstellen, die im client, ich bekomme diese exception:

java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at Program.main(Program.java:10)

Kann mir jemand sagen was ich falsch mache hier?

aktualisiert: ich bin mit x64 Windows 7 Ultimate, ich sehe nichts-firewall-Meldung, pop-up (ich habe es sah für server einmal, was ich darf und die Option " immer zulassen). Ich kann eine Verbindung über telenet, kein problem. Jeder andere Vorschlag bitte.

  • Während es ist toll zu sehen, wie der code und das Ergebnis der client, kann Sie bieten mehr Kontext? Der Java-client sagt, dass die Verbindung abgelehnt wurde, wird der server sagen, dass es hören? Mit den server-listening, können Sie mit telnet auf diesen port, und stellen Sie sicher, dass Sie nicht bekommen, eine Verbindung Verweigerung?
  • könnte es sein, das die Windows-firewall blockiert wird?
  • Versuchen, eine Verbindung mit telnet zuerst einmal angeschlossen, alles, was Sie eingeben sollten ausgedruckt werden. Aber ich vermute (ich habe es nicht ausprobiert), dass Ihr server auflegen, sobald eine neue Zeile erkannt wird. Können Sie eine Verbindung mit telnet dann können Sie ziemlich sicher sein, dein problem liegt im Quellcode, auf beiden Seiten. Wenn nicht, dann wird dein problem liegt dazwischen (firewall ? es normalerweise der Fall ist). Wenn unter windows watch out für die windows-popup zu erlauben, Ihr Programm auf das Netzwerk zugreifen. manchmal neigt Sie dazu sich zu verstecken hinter anderen Fenstern (IDE).
  • Ich bin mit x64 Windows 7 Ultimate, ich sehe nichts-firewall-Meldung, pop-up (ich habe es sah für server einmal, was ich darf und die Option " immer zulassen). Ich kann eine Verbindung über telenet, kein problem. Jeder andere Vorschlag bitte.
InformationsquelleAutor Raza | 2011-10-09
Schreibe einen Kommentar