思想就是:建立两个线程 一个发送功能 一个接收功能 注意Socket socket做成员变量 构造方法传递过去 然后Scanner 和 Dateoutputstream放到run()方法里 try catch就好了
两台电脑连接 连接同一个热点 在命令提示符 ipconfig 找到服务器的ip地址
注意 先启动服务器 再启动客户端
服务器:
package feifan;
?
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
?
?
public class server extends Thread{
? //服务端
? public static void main(String[] args) throws IOException {
?
ServerSocket serverSocket=new ServerSocket(9999);
Socket socket=serverSocket.accept();//监听器
?
? ? ? new send(socket).start();//创建一个发送线程 然后启动
? ? ? new receive1(socket).start();//创建一个接收线程 然后启动
?
?
? }
}
?
客户端:
package feifan;
?
?
import java.io.IOException;
import java.net.Socket;
?
public class client extends Thread {
? //客户端
? public static void main(String[] args) throws IOException {
?
? ? ? Socket socket=new Socket("192.168.181.151",9999);//IP+端口
?
? ? ? new send(socket).start();//创建一个发送线程 然后启动
? ? ? new receive1(socket).start();//创建一个接收线程 然后启动
?
? }
}
?
发送线程:
package feifan;
?
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.*;
import java.util.Scanner;
?
public class send extends Thread {
? //做发送功能
?
? Socket socket;
?
?
? public send(Socket socket) throws IOException {//初始化
? ? ? this.socket = socket;
? }
?
? @Override
? public void run() {
? ? ? Scanner scanner =new Scanner(System.in);
?
? ? ? while (true){
? ? ? ? ? String s=scanner.next();
? ? ? ? ? DataOutputStream outputStream=null;
?
? ? ? ? ? try {
? ? ? ? ? ? outputStream=new DataOutputStream(socket.getOutputStream());
? ? ? ? ? } catch (IOException e) {
? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? }
?
?
? ? ? ? ? try {
? ? ? ? ? ? outputStream.writeUTF(s);
? ? ? ? ? } catch (IOException e) {
? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? }
?
?
? ? ? }
? }
}
?
接收线程:
package feifan;
?
import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;
?
public class receive1 extends Thread{
? //接收信息功能(线程)
Socket socket;
DataInputStream dataInputStream;
?
?
? public receive1(Socket socket) throws IOException {
? ? ? this.socket = socket;
? }
?
? @Override
? public void run() {
? ? ? DataInputStream dataInputStream= null;
? ? ? try {
? ? ? ? ? dataInputStream = new DataInputStream(socket.getInputStream());
? ? ? } catch (IOException e) {
? ? ? ? ? e.printStackTrace();
? ? ? }
?
?
? ? ? while (true){
? String s= null;
? try {
? ? ? s = dataInputStream.readUTF();
? } catch (IOException e) {
? ? ? e.printStackTrace();
? }
?
? System.out.println(s);//把读到的内容输出来
}
? }
}
?
?
|