candy_rainbow
candy_rainbow
2015-11-07 14:32

我有一个关于java网络通信的问题

  • java

我先大概说一下,就是我这个程序有客户和服务器两部分,但是我只能实现客户向服务器的一次对话,服务器可以接收到来自客户的信息,但是以后客户说话或者服务器说话对方都不能接受到请问这是什么问题呀程序在下面希望大神们帮我看看,这对于一个初学者来说真的很重要!
客户端程序:
import java.awt.Color;
import java.awt.Container;
import java.io.*;
import java.net.*;

import javax.swing.*;

public class MyClient extends JFrame
{
public static void main (String args[])
{
JFrame jf=new JFrame("这是用户");
Container container=jf.getContentPane();
jf.setVisible(true); //设置窗体为可视
jf.setLayout(null); //窗体布局为网格
jf.setSize(600,500);
jf.setBackground(Color.BLUE);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JTextArea a=new JTextArea("",2,10);
container.add(a);
a.setBounds(10, 10, 100, 100);
try
{
Socket socket = new Socket("127.0.0.1",2017);
PrintWriter out = new PrintWriter(socket.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader (socket.getInputStream()));
BufferedReader sin = new BufferedReader(new InputStreamReader (System.in));
String s,str;
do
{
s=sin.readLine();
out.println(s);
out.flush();//输出
a.setText("me: "+s);
str=in.readLine();
a.setText("he: "+str);

        }while(str!="bye");
        out.close();
        in.close();
        socket.close();
    }
    catch(Exception e)
    {}
}

}

服务器端程序:
import java.awt.Color;
import java.awt.Container;
import java.io.*;
import java.net.*;

import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
import javax.swing.*;
public class MyServer extends JFrame
{

public static void main (String args[]){
    JFrame jf=new JFrame("这是服务器");
    Container container=jf.getContentPane();
    jf.setVisible(true);   //设置窗体为可视
    jf.setLayout(null);  //窗体布局为网格
    jf.setSize(600,500);
    jf.setBackground(Color.BLUE);
    jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    JTextArea a=new JTextArea("",2,10);
    container.add(a);
    a.setBounds(10, 10, 100, 100);
    try
    {
        ServerSocket server = new ServerSocket(2017);
        Socket socket=server.accept();


        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter out = new PrintWriter(socket.getOutputStream());
        BufferedReader sin=new BufferedReader(new  InputStreamReader(System.in));


        String s,str;

        do
        {
            s=in.readLine();
            a.setText("he:  "+s);
            str=sin.readLine();
            out.println(str);
            out.flush();
            a.setText("me:  "+str);
        }while(s!="bye");
        {
            in.close();
            out.close();
            socket.close();
            server.close();
        }




    }catch(Exception e){
        System.out.println("Error:"+e);
    }
}

}
蛮烦大家了!非常感谢

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

7条回答

为你推荐