2016-04-01 30 views
0

olarak tanımla Java Socket programlamasında yeniyim. NIO yuvasını kullanmaya çalışıyorum. İstemci ve sunucu tarafında bazı kodları takip ediyorum. Her birini ayrı ayrı kullanabilirim. ama her ikisini de ana kullandığımda, sadece ilk önce başlayacaktır.Hem istemci hem de sunucuyu ana

public static void main(String[] args) { 
NioSocketServer server = new NioSocketServer(); 
NioSocketClient client = new NioSocketClient(); 
+0

Hem sunucuya hem de istemciye tek işlevde sahip olmanın amacı nedir? ve bir nokta varsa, bunu yapamazsınız, istemci ve sunucu en az farklı konu olmalıdır! –

+0

Tamam, diğer iki makine arasına eklenecek bir modül yazacağım (şu anda iletişim kuruyor), bu yüzden istemci tarafında sunucu rolünü oynamak istiyorum ve bu arada amcinin sunucu tarafındaki istemci rolü zaten ağ. Bu yüzden, örneğin, sunucudan mesajı alıyorum, üzerinde bir değişiklik yapacağım ve bundan sonra – APNezh

+0

istemcisine gönderiyorum, böylece ilk şey yaptığınız için bir ServerSocket oluşturacaksınız, böylece ilk makine bağlandığında, bağlanır. ServerSocket ve bu Soket içinde ikinci makineye bilgi göndermek için başka bir Soket açtığınızda, ikinci bir makinede –

cevap

1

Sen (istediğiniz kadar veya NioSocketServer) bir ServerSocket oluşturmanız gerekir:

ServerSocket server = new ServerSocket(8080); 
Socket client = server.accept(); 
// get data from client 
// do your processing here and then 
// make your reponse into a String msg 
Socket secondMachine = new Socket(secondMachineAddress, secondMachinePort); 
secondMachine.getOutputStream().write(msg.getBytes()); // something like this! 
secondMachine.getOutputStream().flush(); 

buna ben bu sorunu nasıl yönetebileceğiniz bunu mantıklı ve ikinci ise ilk bilmek istiyorum Tabii ki kod sadece bir şemadır ve sadece nasıl yapıldığına dair bir fikir vermektir, işe yaramaz (veya derleme!).

+0

problemi, yeni AsynchronousSocketChannel'i tanımladığınızda NIO'da ortaya çıkar. EşzamansızSunucuSocketChannel, her biri için ayrı CompletionHandler tanımlamalı ve böylece bunları kolayca tanımlayamazsınız. – APNezh

+0

iyi, bu sorunun bir parçası olarak bahsetmediniz, nasıl bilebilirdim? –

İlgili konular