一个简单的客户端
import java.net.*;
import java.io.*;
public class test
{
public static void main(String [] args) throws IOException
{
Socket soc=new Socket("192.168.43.193",2333);
PrintStream writer=new PrintStream(soc.getOutputStream());
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
String s;
while(true) {
s=reader.readLine();
writer.println(s);
}
}
}
使用netcat作为服务端
因为socket输出流是OutputStream类型,是一个字节流,因此要把字符流转换成字节流
这里利用PrintStream类的println方法会转换字符流成字节流,因此把soc.getOutputStream() socket的输出流作为初始化的参数,PrintStream的输出目标是socket输出流
实现一个简单的服务端
import java.net.*;
import java.io.*;
public class test
{
public static void main(String [] args) throws IOException
{
ServerSocket server=new ServerSocket(2333);
Socket soc=server.accept();
BufferedReader reader=new BufferedReader(new InputStreamReader(soc.getInputStream()));
String s;
while(true) {
s=reader.readLine();
System.out.println(s);
}
}
}
Netcat作为客户端,java程序作为服务端
soc.getInputStream()返回一个InputStream类型对象,跟System.in一样是InputStream类,因此可以使用下面代码
BufferedReader reader=new BufferedReader(new InputStreamReader(soc.getInputStream()));
将socket的输入字节流转换成字符流,再使用buffer技术