JAVA聊天器_服务端

Code:
  1. importjava.io.*;
  2. importjava.net.*;
  3. importjavax.swing.*;
  4. importjava.awt.*;
  5. importjava.awt.event.*;
  6. //目前还有一个BUG就是每次服务器发完话之后必须等待回答后才能再次发话,BUG谨存在服务端
  7. classthreadServerextendsEdServerimplementsRunnable
  8. {
  9. publicvoidrun(){
  10. //TODOAuto-generatedmethodstub
  11. while(true)
  12. {
  13. go();
  14. }
  15. }
  16. publicsynchronizedvoidgo()
  17. {
  18. try{
  19. sock=serverSock.accept();
  20. reader=newInputStreamReader(sock.getInputStream());
  21. bufferReader=newBufferedReader(reader);
  22. receiveString=bufferReader.readLine();
  23. System.out.println(receiveString);
  24. receiveText.setText(receiveString);
  25. }catch(IOExceptione){
  26. //TODOAuto-generatedcatchblock
  27. e.printStackTrace();
  28. }
  29. }
  30. }
  31. publicclassEdServer{
  32. /**
  33. *server
  34. */
  35. staticintport;
  36. staticJButtonportConfirmButton,rePort;
  37. staticJTextFieldtransferText,receiveText;
  38. staticJTextFieldportText;
  39. staticJButtonsentConfirm;
  40. staticSocketsock;
  41. staticStringreceiveString,transferString;
  42. staticServerSocketserverSock;
  43. staticBufferedReaderbufferReader;
  44. staticInputStreamReaderreader;
  45. publicvoidui()
  46. {
  47. JFrameframe=newJFrame("聊天服务端_徐方鑫");
  48. JPanelpanel=newJPanel();
  49. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  50. frame.add(panel);
  51. BoxpanelMain=Box.createVerticalBox();
  52. panel.add(panelMain);
  53. {
  54. BoxportMain=Box.createHorizontalBox();
  55. {
  56. panelMain.add(portMain);
  57. JLabelipLabel=newJLabel("ip:");
  58. JTextFieldipText=newJTextField(15);
  59. ipText.setEnabled(false);
  60. portMain.add(ipLabel);
  61. portMain.add(ipText);
  62. {
  63. //这里为IP获取程序,IP为SOCKET的IP,address为MAC地址
  64. StringIP=null,address=null;
  65. InetAddressaddr;
  66. try{
  67. addr=InetAddress.getLocalHost();
  68. IP=addr.getHostAddress().toString();
  69. address=addr.getHostName().toString();
  70. System.out.println(IP);
  71. System.out.println(address);
  72. }catch(UnknownHostExceptione){
  73. //TODOAuto-generatedcatchblock
  74. e.printStackTrace();
  75. }
  76. ipText.setText(IP);
  77. }
  78. JLabelportLabel=newJLabel("port:");
  79. portMain.add(portLabel);
  80. portText=newJTextField("5000",8);
  81. portText.setHorizontalAlignment(JTextField.CENTER);
  82. portMain.add(portText);
  83. }
  84. BoxportConfirm=Box.createHorizontalBox();
  85. {
  86. panelMain.add(portConfirm);
  87. portConfirmButton=newJButton("确定");
  88. rePort=newJButton("重置");
  89. //portConfirm.add(portConfirmButton);
  90. {
  91. portConfirmButton.addActionListener(newActionListener()
  92. {
  93. publicvoidactionPerformed(ActionEvente)
  94. {
  95. port=Integer.valueOf(portText.getText()).intValue();
  96. System.out.println(port);
  97. try{
  98. serverSock=newServerSocket(port);
  99. }catch(IOExceptione1){
  100. //TODOAuto-generatedcatchblock
  101. e1.printStackTrace();
  102. }
  103. Runnablerunnable=newthreadServer();
  104. ThreadsockThread=newThread(runnable);
  105. sockThread.start();
  106. }
  107. });
  108. }
  109. //portConfirm.add(rePort);
  110. {
  111. rePort.addActionListener(newActionListener()
  112. {
  113. publicvoidactionPerformed(ActionEvente)
  114. {
  115. portText.setText("5000");
  116. transferText.setText(null);
  117. receiveText.setText(null);
  118. }
  119. });
  120. }
  121. }
  122. }
  123. BoxreceiveMain=Box.createHorizontalBox();
  124. panelMain.add(receiveMain);
  125. {
  126. JLabelreceive=newJLabel("接收:");
  127. receiveMain.add(receive);
  128. receiveText=newJTextField(20);
  129. receiveMain.add(receiveText);
  130. receiveText.enable(false);
  131. }
  132. BoxtransferMain=Box.createHorizontalBox();
  133. panelMain.add(transferMain);
  134. {
  135. JLabeltransfer=newJLabel("发送:");
  136. transferMain.add(transfer);
  137. transferText=newJTextField(20);
  138. transferMain.add(transferText);
  139. }
  140. BoxtalkConfirm=Box.createHorizontalBox();
  141. panelMain.add(talkConfirm);
  142. {
  143. sentConfirm=newJButton("发送");
  144. talkConfirm.add(sentConfirm);
  145. talkConfirm.add(rePort);
  146. talkConfirm.add(portConfirmButton);
  147. }
  148. frame.setSize(400,150);
  149. frame.setVisible(true);
  150. }
  151. publicstaticvoidnetServer()
  152. {
  153. try{
  154. serverSock=newServerSocket(port);
  155. }catch(IOExceptione){
  156. //TODOAuto-generatedcatchblock
  157. e.printStackTrace();
  158. }
  159. }
  160. publicstaticvoidmain(String[]args){
  161. //TODOAuto-generatedmethodstub
  162. EdServered=newEdServer();
  163. ed.ui();
  164. {
  165. port=Integer.valueOf(portText.getText()).intValue();
  166. System.out.println(port);
  167. try{
  168. serverSock=newServerSocket(port);
  169. }catch(IOExceptione1){
  170. //TODOAuto-generatedcatchblock
  171. e1.printStackTrace();
  172. }
  173. Runnablerunnable=newthreadServer();
  174. ThreadsockThread=newThread(runnable);
  175. sockThread.start();
  176. }
  177. sentConfirm.addActionListener(newActionListener()
  178. {
  179. publicvoidactionPerformed(ActionEvente)
  180. {
  181. try{
  182. PrintWriterwriter=newPrintWriter(sock.getOutputStream());
  183. StringwriterTransfer=transferText.getText();
  184. System.out.println(writerTransfer);
  185. writer.println(writerTransfer);
  186. writer.flush();
  187. }catch(IOExceptione1){
  188. //TODOAuto-generatedcatchblock
  189. e1.printStackTrace();
  190. }
  191. }
  192. });
  193. }
  194. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值