好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java实现聊天机器人完善版

本文实例为大家分享了Java实现聊天机器人完善版的具体代码,供大家参考,具体内容如下

Client代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

package GUISocket.chat.Client;

import javax.swing.JFrame;

import javax.swing.JPanel;

import java.awt.EventQueue;

 

import javax.swing.JLabel;

import javax.swing.JList;

import javax.swing.JTextField;

import javax.swing.DefaultListModel;

import javax.swing.JButton;

import javax.swing.JTextArea;

import javax.swing.JScrollPane;

import javax.swing.ScrollPaneConstants;

import javax.swing.border.EmptyBorder;

 

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

 

public class ClientForm extends JFrame {

 

  private JPanel contentPane;

  DefaultListModel<String> itemUsers;

  private JTextField textIP;

  private JTextField textPort;

  public JTextField textUser;

  public JTextArea textLog;

  public JList listUser;

  public JTextArea textSend ;

  public static void main(String[] args) {

   EventQueue.invokeLater( new Runnable() {

    public void run() {

     try {

      ClientForm frame = new ClientForm();

      frame.setVisible( true );

      ClientMG.getClientMG().setClientForm(frame);

     } catch (Exception e) {

      e.printStackTrace();

     }

    }

   });

  }

  public ClientForm() {

   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

   setBounds( 100 , 100 , 589 , 607 );

   contentPane = new JPanel();

   contentPane.setBorder( new EmptyBorder( 5 , 5 , 5 , 5 ));

   setContentPane(contentPane);

   contentPane.setLayout( null );

  

   JLabel label = new JLabel( "配置信息" );

   label.setBounds( 10 , 10 , 54 , 15 );

   contentPane.add(label);

  

   JLabel lblIp = new JLabel( "IP" );

   lblIp.setBounds( 10 , 35 , 27 , 15 );

   contentPane.add(lblIp);

  

   textIP = new JTextField();

   textIP.setText( "192.168.1.6" );

   textIP.setBounds( 33 , 35 , 92 , 21 );

   contentPane.add(textIP);

   textIP.setColumns( 10 );

  

   JLabel label_1 = new JLabel( "端口" );

   label_1.setBounds( 137 , 35 , 38 , 15 );

   contentPane.add(label_1);

  

   textPort = new JTextField();

   textPort.setText( "8900" );

   textPort.setBounds( 168 , 32 , 66 , 21 );

   contentPane.add(textPort);

   textPort.setColumns( 10 );

  

   JLabel label_2 = new JLabel( "用户名" );

   label_2.setBounds( 255 , 38 , 54 , 15 );

   contentPane.add(label_2);

  

   textUser = new JTextField();

   textUser.setBounds( 302 , 35 , 66 , 21 );

   contentPane.add(textUser);

   textUser.setColumns( 10 );

  

   JButton LOGIN = new JButton( "登录" );

   LOGIN.setBounds( 395 , 34 , 66 , 23 );

   contentPane.add(LOGIN);

  

   JButton btnClose = new JButton( "关闭" );

   btnClose.setBounds( 480 , 31 , 71 , 23 );

   contentPane.add(btnClose);

  

   JPanel panel = new JPanel();

   panel.setBounds( 0 , 10 , 573 , 61 );

   contentPane.add(panel);

   panel.setLayout( null );

  

   JPanel panel_1 = new JPanel();

   panel_1.setBounds( 0 , 81 , 573 , 369 );

   contentPane.add(panel_1);

   panel_1.setLayout( null );

  

   JLabel label_3 = new JLabel( "聊天记录" );

   label_3.setBounds( 10 , 10 , 54 , 15 );

   panel_1.add(label_3);

  

   JScrollPane scrollPane = new JScrollPane();

   scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

   scrollPane.setBounds( 20 , 35 , 323 , 324 );

   panel_1.add(scrollPane);

  

   textLog = new JTextArea();

   textLog.setWrapStyleWord( true );

   textLog.setLineWrap( true );

   scrollPane.setViewportView(textLog);

  

   JLabel label_4 = new JLabel( "在线用户" );

   label_4.setBounds( 351 , 10 , 54 , 15 );

   panel_1.add(label_4);

  

   JScrollPane scrollPane_1 = new JScrollPane();

   scrollPane_1.setBounds( 353 , 35 , 210 , 324 );

   panel_1.add(scrollPane_1);

  

  

   this .itemUsers= new DefaultListModel<String>();

   this .listUser= new JList(itemUsers);

   scrollPane_1.setViewportView( this .listUser);

  

  

   JPanel panel_2 = new JPanel();

   panel_2.setBounds( 10 , 449 , 553 , 119 );

   contentPane.add(panel_2);

   panel_2.setLayout( null );

  

   JLabel label_5 = new JLabel( "操作" );

   label_5.setBounds( 10 , 10 , 54 , 15 );

   panel_2.add(label_5);

  

   JScrollPane scrollPane_2 = new JScrollPane();

   scrollPane_2.setBounds( 10 , 22 , 533 , 64 );

   panel_2.add(scrollPane_2);

  

   textSend = new JTextArea();

   textSend.setWrapStyleWord( true );

   textSend.setLineWrap( true );

   scrollPane_2.setViewportView(textSend);

  

   JButton button_1 = new JButton( "群发" );

   button_1.addActionListener( new Button_1ActionListener());

   button_1.setBounds( 307 , 86 , 93 , 23 );

   panel_2.add(button_1);

  

   JButton sendMG = new JButton( "发送" );

   sendMG.addActionListener( new SendMGActionListener());

   sendMG.setBounds( 432 , 86 , 93 , 23 );

   panel_2.add(sendMG);

  

   LOGIN.addActionListener( new ActionListener() {

    public void actionPerformed(ActionEvent e) {

     //连接服务器user

     String IP=textIP.getText().trim();

     int port=Integer.parseInt(textPort.getText().trim());

     String user=textUser.getText().trim();

    

     if (ClientMG.getClientMG().Connect(IP,port,user)) {

      ClientMG.getClientMG().setLogTxt( "已经连接到服务器" );

     

     }

     else {

      ClientMG.getClientMG().setLogTxt( "连接服务器失败" );

     }

    }

   });

  }

  private class SendMGActionListener implements ActionListener {

   public void actionPerformed(ActionEvent e) {

   

    //发送信息

    //1.获取选择的用户名称

    //2.发送给服务器端含有接收用户信息的交互协议串

    String SenderName=ClientMG.getClientMG().getClientThd().getName();

    String RecName=listUser.getSelectedValue().toString();

    String MSGinfo=textSend.getText().trim();

   

    String sMsg= "MSG|" +SenderName+ "|" +RecName+ "|" +MSGinfo;

    ClientMG.getClientMG().getClientThd().sendMsg(sMsg);

    //将消息内容显示到聊天记录中

    //[发送者]

    //消息内容

    //清空发送消息框

    ClientMG.getClientMG().setLogTxt( "[我]:" );

    ClientMG.getClientMG().setLogTxt(MSGinfo);

   

    textSend.setText( "" );

   }

  }

  private class Button_1ActionListener implements ActionListener {

   public void actionPerformed(ActionEvent e) {

    //群发信息

    //1.获取选择的用户名称

    //2.发送给服务器端含有接收用户信息的交互协议串

    //发送到服务器,MSG|SenderName|RecName|MSGInfo

    String SenderName=ClientMG.getClientMG().getClientThd().getName();

    String RecName= "ALL" ;

    String MSGinfo=textSend.getText().trim();

   

    String sMsg= "MSG|" +SenderName+ "|" +RecName+ "|" +MSGinfo;

    ClientMG.getClientMG().getClientThd().sendMsg(sMsg);

    //将消息内容显示到聊天记录中

    //[发送者]

    //消息内容

    //清空发送消息框

    ClientMG.getClientMG().setLogTxt( "[我]:" );

    ClientMG.getClientMG().setLogTxt(MSGinfo);

   

    textSend.setText( "" );

   }

  }

 

 

}

ClientMG代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

package GUISocket.chat.Client;

 

import java.net.Socket;

 

public class ClientMG {

  private static final ClientMG clientmg= new ClientMG();

  private ClientMG() {}

  public static ClientMG getClientMG() {

   return clientmg;

  }

 

  private ClientForm clientWin;

  public void setClientForm(ClientForm c) {

   clientWin=c;

  }

 

  public void setLogTxt(String str) {

   clientWin.textLog.append(str+ "\r\n" ); 

  }

 

  public void addItem(String user) {

  

   clientWin.itemUsers.addElement(user);

  }

 

  public void addItems(String[] users) {

   for ( int i= 0 ;i<users.length;i++) {

    clientWin.itemUsers.addElement(users[i]);

   }

 

  }

 

  SocketThread sthd;

  public boolean Connect(String IP, int port,String user) {

   Socket socket= null ;

   try {

    socket= new Socket(IP,port);

    sthd= new SocketThread(socket, user);

    sthd.start();

    return true ;

   } catch (Exception e) {

    // TODO: handle exception

    e.printStackTrace();

    return false ;

   }

  }

 

  public SocketThread getClientThd() {

   return sthd;

  }

}

SocketThread代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

package GUISocket.chat.Client;

 

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.Socket;

 

 

 

public class SocketThread extends Thread{

  BufferedReader br= null ;

  PrintWriter pw= null ;

  Socket socket= null ;

 

  public SocketThread(Socket socket,String user){

   super (user); //登录时用的用户名

   this .socket=socket;

  }

 

  public void run() {

   try {

    br= new BufferedReader( new InputStreamReader(socket.getInputStream(), "UTF-8" ));

    pw= new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream(), "UTF-8" )));

    String sLOGIN= "LOGIN|" + this .getName();

    sendMsg(sLOGIN);

   

    String str= "" ;

    while ((str=br.readLine())!= null ) {

     String[] commands=str.split( "\\|" );

     if (commands[ 0 ].equals( "USERLISTS" )) { //USERLISTS|user1_user2_user3

      String[] sUsers=commands[ 1 ].split( "\\_" );

      ClientMG.getClientMG().addItems(sUsers);

     }

     else if (commands[ 0 ].equals( "ADD" )) { //ADD|UserName

      String sNewUser=commands[ 1 ];

      ClientMG.getClientMG().addItem(sNewUser);

     }

     else if (commands[ 0 ].equals( "MSG" )) { //格式 MSG|SenderName|MSGinfo

      String SenderName=commands[ 1 ];

      String MSGinfo=commands[ 2 ];

      //将消息内容显示到聊天记录中

      //[发送者]

      //消息内容

      ClientMG.getClientMG().setLogTxt( "[" +SenderName+ "]" );

      ClientMG.getClientMG().setLogTxt(MSGinfo);

     }

     //ClientMG.getClientMG().setLogTxt(str);

    

    }

   } catch (Exception e) {

    // TODO: handle exception

    e.printStackTrace();

   } finally {

    try {

     if (pw!= null )

      pw.close();

     if (br!= null )

      br.close();

     if (socket!= null )

      socket.close();

    } catch (Exception e2) {

     // TODO: handle exception

    }

   }

  }

  public void sendMsg(String str) {

   pw.println(str);

   pw.flush();

  }

}

ServerForm代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

package GUISocket.chat.Server;

import javax.swing.JFrame;

import javax.swing.JPanel;

import java.awt.EventQueue;

 

import javax.swing.JLabel;

import javax.swing.JTextField;

import javax.swing.JButton;

import javax.swing.JTextArea;

import javax.swing.JScrollPane;

import javax.swing.ScrollPaneConstants;

import javax.swing.border.EmptyBorder;

 

 

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

 

public class ServerForm extends JFrame {

  /**

   *

   */

 

  private JPanel contentPane;

  public JTextArea textLog;

  private JTextField textPort;

  public static void main(String[] args) {

   EventQueue.invokeLater( new Runnable() {

    public void run() {

     try {

      ServerForm frame = new ServerForm();

      frame.setVisible( true );

      ServerMG.getServerMG().setServerForm(frame);

     } catch (Exception e) {

      e.printStackTrace();

     }

    }

   });

  }

 

 

 

  public ServerForm() {

   setTitle( "多人聊天服务器" );

   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

   setBounds( 100 , 100 , 510 , 566 );

   contentPane = new JPanel();

   contentPane.setBorder( new EmptyBorder( 5 , 5 , 5 , 5 ));

   setContentPane(contentPane);

   contentPane.setLayout( null );

  

   JLabel lblNewLabel = new JLabel( "配置信息" );

   lblNewLabel.setBounds( 20 , 10 , 54 , 15 );

   contentPane.add(lblNewLabel);

  

   JLabel label = new JLabel( "端口:" );

   label.setBounds( 30 , 34 , 39 , 15 );

   contentPane.add(label);

  

   textPort = new JTextField();

   textPort.setText( "8900" );

   textPort.setBounds( 65 , 31 , 66 , 21 );

   contentPane.add(textPort);

   textPort.setColumns( 10 );

  

   JButton btnStart = new JButton( "开启服务" );

   btnStart.addActionListener( new BtnStartActionListener());

   btnStart.setBounds( 180 , 30 , 93 , 23 );

   contentPane.add(btnStart);

  

   JButton btnClose = new JButton( "关闭服务" );

   btnClose.addActionListener( new BtnCloseActionListener());

   btnClose.setBounds( 325 , 30 , 93 , 23 );

   contentPane.add(btnClose);

  

   JPanel panel = new JPanel();

   panel.setBounds( 10 , 10 , 474 , 54 );

   contentPane.add(panel);

   panel.setLayout( null );

  

   JLabel label_1 = new JLabel( "消息记录" );

   label_1.setBounds( 10 , 94 , 54 , 15 );

   contentPane.add(label_1);

  

   JPanel panel_1 = new JPanel();

   panel_1.setBounds( 0 , 81 , 474 , 436 );

   contentPane.add(panel_1);

   panel_1.setLayout( null );

  

   JScrollPane scrollPane = new JScrollPane();

   scrollPane.setBounds( 10 , 41 , 464 , 368 );

   panel_1.add(scrollPane);

   scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

  

   textLog = new JTextArea();

   textLog.setLineWrap( true );

   textLog.setWrapStyleWord( true );

   scrollPane.setViewportView(textLog);

  

  

  

  }

  private class BtnCloseActionListener implements ActionListener {

   public void actionPerformed(ActionEvent e) {

   

   }

  }

  private class BtnStartActionListener implements ActionListener {

   public void actionPerformed(ActionEvent e) {

    //开启服务

   

   

    int port=Integer.parseInt(textPort.getText().trim());

   

    if (ServerMG.getServerMG().CreateServer(port)) {

 

     ServerMG.getServerMG().setLogTxt( "服务器开启..." );

    }

    else {

     ServerMG.getServerMG().setLogTxt( "服务器开启失败..." );

    }

   }

  }

}

ServerListener代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

package GUISocket.chat.Server;

 

import java.net.ServerSocket;

import java.net.Socket;

 

public class ServerListener extends Thread{

  Socket socket= null ;

  ServerSocket server= null ;

  public ServerListener(ServerSocket server) {

   this .server=server;

  }

  public void run() {

   try {

    while ( true ) {

     socket=server.accept();

     ServerMG.getServerMG().setLogTxt( "客户端: " +socket); 

     new SocketThread(socket).start();

    }

   

   } catch (Exception e) {

    // TODO: handle exception

    e.printStackTrace();

   }

  }

 

}

SeverMG代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

package GUISocket.chat.Server;

 

import java.net.ServerSocket;

import java.net.Socket;

import java.util.ArrayList;

 

import javax.swing.JTextArea;

 

public class ServerMG {

  private static final ServerMG servermg= new ServerMG();

  private ServerMG() {}

  public static ServerMG getServerMG() {

   return servermg;

  

  }

 

  //主界面的操作

  private ServerForm serverWin;

 

  //将窗体对象注册到管理类当中

  public void setServerForm(ServerForm s) {

   serverWin=s;

  }

  //设置主界面

  public void setLogTxt(String str) {

   serverWin.textLog.append(str+ "\r\n" );

  }

 

  private ServerSocket server;

  public boolean CreateServer( int port) {

   try {  

    server= new ServerSocket(port);

    new ServerListener(server).start();

    return true ;

   } catch (Exception e) {

    // TODO: handle exception

    e.printStackTrace();

    return false ;

   }

  }

 

  //ArrayList操作

  ArrayList<SocketThread> a1OnlineList= new ArrayList<>(); //存放所有和

  public synchronized void addList(SocketThread sc) {

   //限制重名

   a1OnlineList.add(sc);

  }

 

  public void clearList() {

   a1OnlineList.clear();

  }

 

  public synchronized void removeList(SocketThread sc) {

   for ( int i= 0 ;i<a1OnlineList.size();i++) {

    SocketThread s=a1OnlineList.get(i);

    if (s.equals(sc)) {

     a1OnlineList.remove(sc);

     break ;

    }

   }

  }

 

  //信息的管理

  public void getOnlineNames(SocketThread sc) {

   //非第1次登录时,得到所有的在线用户

   if (a1OnlineList.size()> 0 ) {

    String sUsers= "" ; //给客户端,USERLISTS|user1_user2_user3

    for ( int i= 0 ;i<a1OnlineList.size();i++) {

     SocketThread s=a1OnlineList.get(i);

     sUsers+=s.getName()+ "_" ;

    }

    sc.sendMsg( "USERLISTS|" +sUsers);

   }

  

  }

  public void sendNewUsertoAll(SocketThread sc) {

   for ( int i= 0 ;i<a1OnlineList.size();i++) {

    SocketThread s=a1OnlineList.get(i);

    s.sendMsg( "ADD|" +sc.getName());

   }

  }

  //通过Mame用户名查找目标

  public SocketThread getSocketThreadByName(String sName) {

   for ( int i= 0 ;i<a1OnlineList.size();i++) {

    SocketThread s=a1OnlineList.get(i);

    if (s.getName().equals(sName)) {

     return s;

    }

   }

   return null ;

  }

 

  //发送给所有人,但是要排除自身

  public void sendMsgtoAll(String sMsg,SocketThread sc) {

   for ( int i= 0 ;i<a1OnlineList.size();i++) {

    SocketThread s=a1OnlineList.get(i);

    if (!s.equals(sc)) {

     s.sendMsg(sMsg);

    }

   }

  }

 

 

}

SocketThread代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

package GUISocket.chat.Server;

 

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.Socket;

 

public class SocketThread extends Thread{

  BufferedReader br= null ;

  PrintWriter pw= null ;

  Socket socket= null ;

  public SocketThread(Socket socket) {

   this .socket = socket;

  }

 

  public void run() {

   try {

    br= new BufferedReader( new InputStreamReader(socket.getInputStream(), "UTF-8" ));

    pw= new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream(), "UTF-8" )));

    String str= "" ;

    while ((str=br.readLine())!= null ) { //循环响应客户的发送信息//接受客户端发过来的信息

     String [] commands=str.split( "\\|" );

    

     if (commands[ 0 ].equals( "LOGIN" )) { //解析登录请求,格式,LOGIN|UserName

      String sUSER=commands[ 1 ];

      this .setName(sUSER); //将用户名信息放入Threadname中

      //1.得到所有在线用户信息名称,发回客户端:USERLISTS|user1_user2_user3

      ServerMG.getServerMG().getOnlineNames( this );

      //2.将当前登录用户的信息(用户名),发送给已经在线的其他用户,ADD|userName

     

      ServerMG.getServerMG().sendNewUsertoAll( this );

      //3.将当前登录的Socket信息放入ArrayList中

      ServerMG.getServerMG().addList( this );

     

     }

     else if (commands[ 0 ].equals( "MSG" )) { //格式:MSG|SenderName|RecName|MSGoinfo

      String SenderName=commands[ 1 ];

      String RecName=commands[ 2 ];

      String MSGinfo=commands[ 3 ];

      //群聊

      if (RecName.equals( "ALL" )) {

       String sMsg= "MSG!" +SenderName+ "|" +MSGinfo; //格式:MSG|SenderName|MSGinfo

       ServerMG.getServerMG().sendMsgtoAll(sMsg, this );

       ServerMG.getServerMG().setLogTxt(SenderName+ "发送信息[" +MSGinfo+ "]到所有人。" );

      }

      //私聊

       else {

        //通过RecName用户名查找,找到目标SocketThread

        SocketThread sc=ServerMG.getServerMG().getSocketThreadByName(RecName);

        if (sc!= null ) {

         //目标对象发送信息,MSG|SenderName|MSGinfo

         String sMsg= "MSG!" +SenderName+ "|" +MSGinfo;

         sc.sendMsg(sMsg);

        

         //写入信息日志

         ServerMG.getServerMG().setLogTxt(SenderName+ "发送信息[" +MSGinfo+ "]到" +RecName);

       }

      

       }

     }

    

    

    }

   } catch (Exception e) {

    e.printStackTrace();

   } finally {

    try {

     if (pw!= null )

      pw.close();

     if (br!= null )

      br.close();

     if (socket!= null )

      socket.close();

    } catch (Exception e2) {

     // TODO: handle exception

    }

   }

  }

  public void closeChat() {

   try {

    if (pw!= null )

     pw.close();

    if (br!= null )

     br.close();

    if (socket!= null )

     socket.close();

   } catch (Exception e) {

    e.printStackTrace();

   }

  }

  public void sendMsg(String str) {

   pw.println(str);

   pw.flush();

  }

}

实现结果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

原文链接:https://blog.csdn.net/aaassslll147/article/details/106213988

查看更多关于Java实现聊天机器人完善版的详细内容...

  阅读:11次