Aşağıdaki kodları yazdım. Server client dan gelen veriyi okurken hata çıkıyor. Lütfen yardım... *Server kodları

String[] adviceList = {"Çok çalış","Let's go","merhaba"}; try { ServerSocket server = new ServerSocket(4243); Socket connect =server.accept();

        System.out.println("Server açıldı.");

        PrintWriter writer = new PrintWriter(connect.getOutputStream());
        String advice = adviceList[1];
        writer.println(advice);
        writer.close();
        System.out.println(advice);

        DataInputStream inpu = new DataInputStream(connect.getInputStream());

        while(true){
           char  veri = inpu.readChar();
           System.out.println(veri);
        }

        } catch (IOException e) {
            e.printStackTrace();
    }

*Clietn kodları

try { Socket soket = new Socket(InetAddress.getLocalHost(), 4243); if(soket.isConnected()==true) JOptionPane.showMessageDialog(null, "Başarılı"); InputStreamReader streamReader = new InputStreamReader(soket.getInputStream()); BufferedReader buffer = new BufferedReader(streamReader); String advice = buffer.readLine(); jTextArea1.replaceSelection("Tavsiye :"+advice);

    //Veri gönderiliyor.
     DataOutputStream frServer=new DataOutputStream(soket.getOutputStream());
     frServer.writeChars(jTextField2.getText());
     frServer.flush();

     soket.close();
} catch (IOException ex) {
    ex.printStackTrace();
}

soruldu: 06 Tem '12, 05:11

emax_64's gravatar image

emax_64
64590102101
cevap kabul oranı: 20%

değiştirildi: 06 Tem '12, 05:38

Hata mesajini yazarsaniz daha hizli cevaplar alabilirsiniz.

(06 Tem '12, 07:06) CemIkta ♦ CemIkta's gravatar image

Sorun çözüldü.Sıkıntı ortadan kalktı.Teşekkürker..

(09 Tem '12, 01:54) emax_64 emax_64's gravatar image
1

Nasil cozdugunuzu buraya yazarsaniz baskalarina da yardimi olabilir!

(09 Tem '12, 03:16) CemIkta ♦ CemIkta's gravatar image

emax_64 sanırım oyunu socket ile yapmaya karar verdin. Bu kullandığın tekniğe old io deniyor. Bunla uğraşma ben sana daha kolay ve benim bayıldığım bir şey önereyim. NIO üstüne yazılmış bir framework.

Netty is an asynchronous event-driven network application framework.(JBOSS Netty)

Event based.Configuration basit. Pooling ve daha nicesi. Diğer türlü çok uğraşırsın.

public class CustomServer {

private SocketAddress address;
private ExecutorService pool;
private Channel channel;

public void start(String host, Integer port) {
  this.address = new InetSocketAddress(host, port);
    final ExecutorService bossPool = Executors.newCachedThreadPool();
    final ExecutorService ioPool = Executors.newFixedThreadPool(15);
    pool = Executors.newFixedThreadPool(30);

    ChannelFactory channelFactory = new NioServerSocketChannelFactory(bossPool, ioPool);
    ServerBootstrap bootstrap = new ServerBootstrap(channelFactory);
    bootstrap.setPipelineFactory(new CustomServerChannelPipelineFactory());
    bootstrap.setOption("child.tcpNoDelay", true);
    bootstrap.setOption("child.keepAlive", true);

    channel = bootstrap.bind(address);
    channel.getCloseFuture().addListener(new ChannelFutureListener() {
        @Override
        public void operationComplete(ChannelFuture future) throws Exception {
            bossPool.shutdown();
            ioPool.shutdown();
            pool.shutdown();
        }
    });
}

}

ChannelPipe

public class CustomServerChannelPipelineFactory implements ChannelPipelineFactory {

  @Override
  public ChannelPipeline getPipeline() throws Exception {
ChannelPipeline pipeline = Channels.pipeline();
     pipeline.addLast("framer", new DelimiterBasedFrameDecoder(1024, Delimiters.lineDelimiter()));
     pipeline.addLast("decoder",new StringDecoder());
     pipeline.addLast("encoder",new StringEncoder());
     pipeline.addLast("server", new CustomServerSimpleChannelHandler());
     return pipeline;
 }}

Channel Handler

public class CustomServerSimpleChannelHandler extends SimpleChannelHandler {

@Override
public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
        //client baglandiginda duser
        //channelleri(clients) gruplayabilirsin. belli bir gruba broadcast yapmak icin
        //HashMap kullanabilir.
 }

@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
        //clienttan mesaj geldiginde
        //clienttan donen mesaja gore diger clientlara broadcast yapabilirsin.
        //gruplanmis clientlara broadcast yapabilirsin.
}

@Override
public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
      //client gittiginde duser}}

//Çalıştır.

new CustomServer().start("localhost", "64000");

telnet localhost 64000 //test için
permanent link

cevaplandı: 08 Tem '12, 05:04

gklp's gravatar image

gklp
789317
cevap kabul oranı: 17%

değiştirildi: 08 Tem '12, 05:09

Evet bu düşünce ile hareket ediyordum. Ancak şimdi sizin ilk söylediğiniz gibi web servis yazarak işi çözmeye çalışacağım.

(09 Tem '12, 01:52) emax_64 emax_64's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×25
×3

Soruldu: 06 Tem '12, 05:11

Görüntüleme: 1,226 kez

Son güncelleme: 09 Tem '12, 06:32

powered by BitNami OSQA