JAVA TCP/IP网络通讯编程(二)
一個(gè)實(shí)例通過(guò)client端和server端通訊
客戶端通過(guò)TCP/IP傳輸資源文件,比如圖片,文字,音頻,視頻等.....
服務(wù)端接受到文件存入本地磁盤,返回接受到:“收到來(lái)自于"+s.getInetAddress().getHostName()+"的信息”
?
TestTCP3:
附源碼:
package com.ykw.net;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import org.junit.Test;
//TCP編程例三:從客戶端發(fā)送文件給服務(wù)端,服務(wù)端保存到本地。并返回"發(fā)送成功"給客戶端。并關(guān)閉相應(yīng)的連接
public class TestTCP3 {
?? ?@Test
?? ?public void client()throws Exception{
?? ??? ?//1.創(chuàng)建Socket的對(duì)象
?? ??? ?Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9898);
?? ??? ?//2.從本地獲取一個(gè)文件發(fā)送給服務(wù)端
?? ??? ?OutputStream os = socket.getOutputStream();
?? ??? ?FileInputStream fis = new FileInputStream(new File("1.jpg"));
?? ??? ?byte[] b = new byte[1024];
?? ??? ?int len;
?? ??? ?while((len=fis.read(b))!=-1){
?? ??? ??? ?os.write(b,0,len);
?? ??? ?}
?? ??? ?socket.shutdownOutput();
?? ??? ?//3.接受來(lái)自于服務(wù)端的信息
?? ??? ?InputStream is = socket.getInputStream();
?? ??? ?byte[] b1 = new byte[1024];
?? ??? ?int len1;
?? ??? ?while((len1 = is.read(b1))!=-1){
?? ??? ??? ?String str = new String(b1,0,len1);
?? ??? ??? ?System.out.println(str);
?? ??? ?}
?? ??? ?//4.關(guān)閉相應(yīng)的流和Socket對(duì)象
?? ??? ?is.close();
?? ??? ?os.close();
?? ??? ?fis.close();
?? ??? ?socket.close();
?? ?}
?? ?
?? ?@Test
?? ?public void server()throws Exception{
?? ??? ?//1.創(chuàng)建一個(gè)ServerSocket對(duì)象
?? ??? ?ServerSocket ss = new ServerSocket(9898);
?? ??? ?//2.調(diào)用其accept()方法,返回一個(gè)Socket對(duì)象
?? ??? ?Socket s = ss.accept();
?? ??? ?//3.將從客戶端發(fā)送過(guò)來(lái)的信息保存到本地
?? ??? ?InputStream is = s.getInputStream();
?? ??? ?FileOutputStream fos = new FileOutputStream(new File("D://5.jpg"));
?? ??? ?byte[] b = new byte[1024];
?? ??? ?int len;
?? ??? ?while((len = is.read(b))!=-1){
?? ??? ??? ?fos.write(b,0,len);
?? ??? ?}
?? ??? ?System.out.println("收到來(lái)自于"+s.getInetAddress().getHostAddress()+"的文件");
?? ??? ?//4.發(fā)送“接收成功”的信息反饋給客戶端
?? ??? ?OutputStream os = s.getOutputStream();
?? ??? ?os.write("您發(fā)送的圖片我已接收成功".getBytes());
?? ??? ?//5.關(guān)閉相應(yīng)的流和Socket及ServerSocket的對(duì)象
?? ??? ?os.close();
?? ??? ?fos.close();
?? ??? ?is.close();
?? ??? ?s.close();
?? ??? ?ss.close();
?? ?}
}
轉(zhuǎn)載于:https://www.cnblogs.com/yukewei/p/5041165.html
總結(jié)
以上是生活随笔為你收集整理的JAVA TCP/IP网络通讯编程(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2018跨行转账还收费吗?四家银行跨行转
- 下一篇: 2018同行转账免手续费吗?同行转账多久