Java网络编程TCP
案例1:
public class API2 { public static void main(String[] args) throws IOException { Socket socket = new Socket(InetAddress.getLocalHost(),9999); //连接上后,生成Socket,通过socket.getOutputStream()得到和socket对象关联的输出流对象 OutputStream outputStream = socket.getOutputStream(); //通过输出流,写入数据到数据通道 outputStream.write("diwhfoiwv".getBytes()); //关闭对象和socket必须关闭 outputStream.close(); socket.close(); System.out.println("客户端退出..."); } }
public class API { public static void main(String[] args) throws IOException { //创建客户端服务器,在本机的9999端口,等待连接。当没有 //客户端连接9999端口时,程序会阻塞,等待连接 ServerSocket serverSocket = new ServerSocket(9999); Socket socket = serverSocket.accept(); System.out.println(socket+"连接成功"); InputStream inputStream = socket.getInputStream(); //IO流读取 byte[] buf = new byte[10]; int read=0; while ((read = inputStream.read(buf))!=-1){ System.out.println(new String(buf,0,read)); } inputStream.close(); socket.close(); } }
案例二:
1.编写一个服务器和客户端
2.服务器端在9999端口监听
3.客户端连接到服务器,发送“hello server”,并接收服务器端回发的“hello client”
4.服务器端接收并发送
服务器 public class API { public static void main(String[] args) throws IOException { //创建客户端服务器,在本机的9999端口,等待连接。当没有 //客户端连接9999端口时,程序会阻塞,等待连接 ServerSocket serverSocket = new ServerSocket(9999); Socket socket = serverSocket.accept(); System.out.println("客户端连接成功"); InputStream inputStream = socket.getInputStream(); byte[] buf = new byte[1024]; int read=0; while ((read=inputStream.read(buf))!=-1){ System.out.println(new String(buf,0,read)); } socket.shutdownInput(); OutputStream outputStream = socket.getOutputStream(); outputStream.write("你好".getBytes()); socket.shutdownOutput(); inputStream.close(); outputStream.close(); } }
客户端 public class API2 { public static void main(String[] args) throws IOException { Socket socket = new Socket(InetAddress.getLocalHost(),9999); System.out.println("服务器连接成功"); OutputStream outputStream = socket.getOutputStream(); outputStream.write("你好".getBytes()); socket.shutdownOutput(); InputStream inputStream = socket.getInputStream(); int read = 0; byte[] buf= new byte[1024]; while ((read=inputStream.read(buf))!=-1){ System.out.println(new String(buf,0,read)); } socket.shutdownInput(); inputStream.close(); outputStream.close(); } }
使用字符流传送信息:
服务器 public class API { public static void main(String[] args) throws IOException { //创建客户端服务器,在本机的9999端口,等待连接。当没有 //客户端连接9999端口时,程序会阻塞,等待连接 ServerSocket serverSocket = new ServerSocket(9999); Socket socket = serverSocket.accept(); System.out.println("客户端连接成功"); InputStream inputStream = socket.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String s = bufferedReader.readLine(); System.out.println(s); OutputStream outputStream = socket.getOutputStream(); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream)); bufferedWriter.write("你好 字符流"); bufferedWriter.newLine(); bufferedWriter.flush(); bufferedReader.close(); bufferedWriter.close(); } } 客户端 public class API2 { public static void main(String[] args) throws IOException { Socket socket = new Socket(InetAddress.getLocalHost(),9999); System.out.println("服务器连接成功"); OutputStream outputStream = socket.getOutputStream(); BufferedWriter bufferedWriter= new BufferedWriter(new OutputStreamWriter(outputStream)); bufferedWriter.write("你好 字符流"); //表示写入内容结束 bufferedWriter.newLine(); bufferedWriter.flush(); InputStream inputStream = socket.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String s = bufferedReader.readLine(); System.out.println(s); bufferedReader.close(); bufferedWriter.close();socket.close();
}
}
使用TCP上传文件
public class API { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(8888); Socket socket = serverSocket.accept(); System.out.println("客户端连接成功"); String destPath = "src\\3.png"; BufferedInputStream bufferedInputStream = new BufferedInputStream(socket.getInputStream()); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(destPath)); byte[] bu= new byte[1024]; int read= 0; while ((read=bufferedInputStream.read(bu))!=-1){ bufferedOutputStream.write(bu,0,read); } bufferedOutputStream.flush(); bufferedOutputStream.close(); bufferedInputStream.close(); serverSocket.close(); socket.close(); } }
public class API2 { public static void main(String[] args) throws IOException { Socket socket = new Socket(InetAddress.getLocalHost(),8888); System.out.println("服务器连接成功"); String filePath= "d:\\1.png"; String destPath = "src\\1.png"; BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(filePath)); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(socket.getOutputStream()); byte[] buf = new byte[1024]; int read= 0; while ((read = bufferedInputStream.read(buf))!=-1){ bufferedOutputStream.write(buf,0,read); } bufferedOutputStream.flush(); bufferedInputStream.close(); socket.close(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!