日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java---利用程序实现在控制台聊天

發布時間:2023/12/19 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java---利用程序实现在控制台聊天 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.普通版(不能實現隨意輸入)

電腦A(服務器端)

package day; import java.net.ServerSocket; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;public class Mysever {public static void main(String[] args) {//服務器端 IP 172.16.242.163 PORT: 5566//Socket 插頭//ServerSocket 插座try {ServerSocket ss = new ServerSocket(5566);Socket server = ss.accept();Scanner sca = new Scanner(System.in);//服務器發信息while (true) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String time = sdf.format(new Date());System.out.println("請client發言:");String msg = sca.nextLine();String info = String.format("Server[%s]:%s\r\n", time, msg);server.getOutputStream().write(info.getBytes());//接受信息byte[] buf = new byte[2012];server.getInputStream().read(buf);String read = new String(buf);System.out.println(read);}} catch (Exception e) {e.printStackTrace();}} }

電腦B(客戶端)

import java.net.Socket; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;public class Mynet {public static void main(String[] args) {try{Scanner san = new Scanner(System.in);Socket client = new Socket("172.16.242.163",5566);while(true) {byte[] buf = new byte[2048];client.getInputStream().read(buf);System.out.println(new String(buf));//收信息SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String time = sdf.format(new Date());System.out.print("給service回話:");String msg = san.nextLine();String info = String.format("Client[%s]:%s\r\n", time, msg);client.getOutputStream().write(info.getBytes());//發信息}}catch(Exception e){e.printStackTrace();}}}

二.升級版(可以隨意聊天)利用多線程

服務器端

package day;import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;public class MySend implements Runnable {private OutputStream os;public MySend(OutputStream os) {this.os = os;}@Overridepublic void run() {while(true){Scanner sc = new Scanner(System.in);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String time = sdf.format(new Date());System.out.print("給用戶發言:");String msg = sc.nextLine();String info = String.format("Server[%s]:%s\r\n", time, msg);try {this.os.write(info.getBytes());this.os.flush();}catch(Exception e){e.printStackTrace();}}} }-------------------------------------------------------------------------------------------------package day;import java.io.InputStream;public class MyRead implements Runnable {private InputStream is;public MyRead(InputStream is){this.is = is;}@Overridepublic void run() {while(true){//接收信息byte[] buf = new byte[2014];try {this.is.read(buf);System.out.println(new String(buf));}catch(Exception e){e.printStackTrace();}}} } --------------------------------------------------------------------------------------------------
package day;import java.io.IOException; import java.net.ServerSocket; import java.net.Socket;//service 服務器端 public class Servertext {public static void main(String[] args) {try {ServerSocket ss = new ServerSocket(5566);Socket server = ss.accept();new Thread(new MySend(server.getOutputStream())).start();new Thread(new MyRead(server.getInputStream())).start();} catch (IOException e) {e.printStackTrace();}} } //多個用戶怎么辦 /*list<Socket> sss = new ArrayList<Socket>();while(true){Socket server = ss.accept();sss.add(server);}*/

用戶端

package day;import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;public class MySend implements Runnable {private OutputStream os;public MySend(OutputStream os) {this.os = os;}@Overridepublic void run() {while(true){Scanner sc = new Scanner(System.in);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String time = sdf.format(new Date());System.out.print("給服務器發言:");String msg = sc.nextLine();String info = String.format("Client[%s]:%s\r\n", time, msg);try {this.os.write(info.getBytes());this.os.flush();}catch(Exception e){e.printStackTrace();}}} }-------------------------------------------------------------------------------------------------package day;import java.io.InputStream;public class MyRead implements Runnable {private InputStream is;public MyRead(InputStream is){this.is = is;}@Overridepublic void run() {while(true){//接收信息byte[] buf = new byte[2014];try {this.is.read(buf);System.out.println(new String(buf));}catch(Exception e){e.printStackTrace();}}} } -------------------------------------------------------------------------------------------------- package day;

import java.net.Socket;
//client 客戶端
public class Text {
public static void main(String[] args) {
try{
Socket client = new Socket("172.16.242.163",5566);
new Thread(new MySend(client.getOutputStream())).start();
new Thread(new MyRead(client.getInputStream())).start();
}catch (Exception e){
e.printStackTrace();
}
}
}

?

轉載于:https://www.cnblogs.com/zxwen/p/9673602.html

總結

以上是生活随笔為你收集整理的Java---利用程序实现在控制台聊天的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。