package com.lin;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class MusicTCPServer {
private BufferedInputStream bufferedInputStream;// 创建BufferedReader对象
private ServerSocket server;// 创建服务套接字对象
private Socket socket;
private BufferedOutputStream bufOutStream =null;
public void getServer() {
try {
server = new ServerSocket(8998);
System.out.println("MusicTCPServer服务器套接字已创建成功");
while (true) {
System.out.println("等待客户机的连接");
socket = server.accept();//等待客户机的连接,进入等待状态,并返回这个客户端对象
//当客户端能够连接上之后,读取客户端传过来的东西
System.out.println("连接成功");
//注意BufferedReader是用于处理字符串的,而bufferedInputStream是用来处理二进制的
bufferedInputStream=new BufferedInputStream(socket.getInputStream());
//注意c:\\1.mp3原本没有
bufOutStream =new BufferedOutputStream(new FileOutputStream("c:\\1.mp3"));
getClientMessage();
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void getClientMessage() {
try {
int ch=0;
while ((ch=bufferedInputStream.read())!=-1) {
//服务器向客户端传送数据
bufOutStream.write(ch);
}
System.out.println("上传成功");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (bufOutStream != null)
bufOutStream.close();
if (bufferedInputStream != null)
bufferedInputStream.close();
if (socket != null)
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MusicTCPServer tcp = new MusicTCPServer();
tcp.getServer();
}
}
客户端
package com.lin;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.*;
public class MusicTCPClient {
public static void main(String[] args) {
Socket s = null;
OutputStream os = null;
BufferedInputStream bufInStream=null;
BufferedOutputStream bufOutStream=null;
try {
// 建立连接
s = new Socket("127.0.0.1",8998);//在客户端建立连接要指定ip 和要链接的服务器端口
os = s.getOutputStream();//这里 的OutputStream是从Socket里获取的
bufOutStream=new BufferedOutputStream(os);
bufInStream=new BufferedInputStream(new FileInputStream("c:\\0.mp3"));
int ch=0;
while ((ch=bufInStream.read())!=-1) {
//向服务器发送东西
bufOutStream.write(ch);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(bufInStream!=null)
bufInStream.close();
if(os!=null)
os.close();
if(s!=null)
s.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}