TUP实现一对一聊天

 
  1. package TCP;

  2. import java.io.BufferedReader;

  3. import java.io.IOException;

  4. import java.io.InputStreamReader;

  5. import java.io.PrintWriter;

  6. import java.net.ServerSocket;

  7. import java.net.Socket;

  8. import java.util.Scanner;

  9. /**

  10. * 发送消息线程

  11. */

  12. class Send extends Thread{

  13. private Socket socket;

  14. public Send(Socket socket){

  15. this.socket =socket;

  16. }

  17. @Override

  18. public void run() {

  19. this.sendMsy();

  20. }

  21. /**

  22. * 发送消息

  23. */

  24. private void sendMsy(){

  25. Scanner scanner =null;

  26. PrintWriter pw =null;

  27. try{

  28. scanner =new Scanner(System.in);

  29. pw =new PrintWriter(this.socket.getOutputStream());

  30. while(true){

  31. String str =scanner.nextLine();

  32. pw.println(str);

  33. pw.flush();

  34. }

  35. }catch (Exception e){

  36. e.printStackTrace();

  37. }finally {

  38. if (scanner!=null){

  39. scanner.close();

  40. }

  41. if (pw!=null){

  42. pw.close();

  43. }

  44. if (socket!=null){

  45. try {

  46. socket.close();

  47. } catch (IOException e) {

  48. e.printStackTrace();

  49. }

  50. }

  51. }

  52. }

  53. }

  54. /**

  55. * 接收消息的线程

  56. */

  57. class receive extends Thread{

  58. private Socket socket=null;

  59. public receive(Socket socket){

  60. this.socket =socket;

  61. }

  62. @Override

  63. public void run() {

  64. this.receiveMsg();

  65. }

  66. /**

  67. * 用于接收对方消息

  68. */

  69. private void receiveMsg(){

  70. BufferedReader br =null;

  71. try{

  72. br =new BufferedReader(new InputStreamReader(this.socket.getInputStream()));

  73. while(true){

  74. String mr = br.readLine();

  75. System.out.println("A说:"+mr);

  76. }

  77. }catch (Exception e){

  78. e.printStackTrace();

  79. }finally {

  80. if (br!=null){

  81. try {

  82. br.close();

  83. } catch (IOException e) {

  84. e.printStackTrace();

  85. }

  86. }

  87. }

  88. }

  89. }

  90. public class ChatSocketServer {

  91. public static void main(String[] args) {

  92. ServerSocket serverSocket =null;

  93. try{

  94. serverSocket =new ServerSocket(8888);

  95. System.out.println("服务端已启动等待连接");

  96. Socket socket = serverSocket.accept();

  97. System.out.println("连接成功!");

  98. new Send(socket).start();

  99. new receive(socket).start();

  100. }catch(Exception e){

  101. e.printStackTrace();

  102. }finally {

  103. if (serverSocket!=null){

  104. try {

  105. serverSocket.close();

  106. } catch (IOException e) {

  107. e.printStackTrace();

  108. }

  109. }

  110. }

  111. }

  112. }

以上是服务器端,下面是客户端

 
  1. package TCP;

  2. import java.io.BufferedReader;

  3. import java.io.IOException;

  4. import java.io.InputStreamReader;

  5. import java.io.PrintWriter;

  6. import java.net.Socket;

  7. import java.util.Scanner;

  8. public class ChatSocketClient {

  9. public static void main(String[] args) {

  10. try {

  11. Socket socket =new Socket("127.0.0.1",8888);

  12. System.out.println("连接成功!");

  13. new ClientSend(socket).start();

  14. new Clientreive(socket).start();

  15. } catch (IOException e) {

  16. e.printStackTrace();

  17. }

  18. }

  19. }

  20. /**

  21. * 用于发送消息线程类

  22. */

  23. class ClientSend extends Thread{

  24. @Override

  25. public void run() {

  26. this.sendMsy();

  27. }

  28. private Socket socket;

  29. public ClientSend(Socket socket){

  30. this.socket =socket;

  31. }

  32. /**

  33. * 发送消息

  34. */

  35. private void sendMsy(){

  36. Scanner scanner =null;

  37. PrintWriter pw =null;

  38. try{

  39. scanner =new Scanner(System.in);

  40. pw =new PrintWriter(this.socket.getOutputStream());

  41. while(true){

  42. String str =scanner.nextLine();

  43. pw.println(str);

  44. pw.flush();

  45. }

  46. }catch (Exception e){

  47. e.printStackTrace();

  48. }finally {

  49. if (scanner!=null){

  50. scanner.close();

  51. }

  52. if (pw!=null){

  53. pw.close();

  54. }

  55. if (socket!=null){

  56. try {

  57. socket.close();

  58. } catch (IOException e) {

  59. e.printStackTrace();

  60. }

  61. }

  62. }

  63. }

  64. }

  65. /**

  66. *用于接收消息线程类

  67. */

  68. class Clientreive extends Thread{

  69. private Socket socket=null;

  70. public Clientreive(Socket socket){

  71. this.socket =socket;

  72. }

  73. @Override

  74. public void run() {

  75. this.receiveMsg();

  76. }

  77. /**

  78. * 用于接收对方消息

  79. */

  80. private void receiveMsg(){

  81. BufferedReader br =null;

  82. try{

  83. br =new BufferedReader(new InputStreamReader(this.socket.getInputStream()));

  84. while(true){

  85. String mr = br.readLine();

  86. System.out.println("B说:"+mr);

  87. }

  88. }catch (Exception e){

  89. e.printStackTrace();

  90. }finally {

  91. if (br!=null){

  92. try {

  93. br.close();

  94. } catch (IOException e) {

  95. e.printStackTrace();

  96. }

  97. }

  98. }

  99. }

  100. }

注意先启动服务器端,再启动客户端。

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值