java--网络编程单人聊天

socket 插座,套接字,插口

readLine

BufferedReader对象提供的方法

newLine
BufferedWriter对象提供的方法

服务器:

package one;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerTest {


public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = serverSocket.accept();//判断客户端是否连接上服务器,连接上通过Socket进行相互通信
ServerThread th = new ServerThread(socket);
th.start();//开启线程
/*定义一个邮递员serverSocket,然后邮递员serverSocket把接收到的“东西放进socket袋子中”,
之后开启线程,可以socket.输出流,随后用OutputStreamWriter把字节形式的流转换成
字符流(桥梁的作用),写入文字和字符等 new OutputStreamWriter(socket.getOutputStream())*/

BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
String message = br.readLine();
System.out.println("读取客户端:"+message);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}

服务器线程:

package one;


import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;


public class ServerThread extends Thread{
private Socket socket;

public ServerThread(Socket socket) {
super();
this.socket = socket;
}


@Override
public void run() {
Scanner sc = new Scanner(System.in);
try {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
while(true){
String str = sc.nextLine();
bw.write(str);
bw.newLine();
bw.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}


客户端:

package one;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientTest {
public static void main(String[] args) {
try {
/*获取本地服务器127.0.0.1,端口号为8888.把接收到的“东西放进socket袋子中”,
之后开启线程,可以socket.输出流,随后用OutputStreamWriter把字节形式的流转换成
字符流(桥梁的作用),写入文字和字符等 new OutputStreamWriter(socket.getOutputStream())*/


Socket socket = new Socket("127.0.0.1", 8888);
ClientThread th = new ClientThread(socket);
th.start();

BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
String message = br.readLine();
System.out.println("读取服务器端:"+message);
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


客户端线程:

package one;


import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;


public class ClientThread extends Thread{
private Socket socket;


public ClientThread(Socket socket) {
super();
this.socket = socket;
}

@Override
public void run() {
Scanner sc = new Scanner(System.in);
try {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
while(true){
String str = sc.nextLine();
bw.write(str);
bw.newLine();
bw.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值