67,515
社区成员
发帖
与我相关
我的任务
分享
对象定义:
public class TcpMessage implements java.io.Serializable {
//对象定义
String fileName;
byte msg[]=new byte[1024];
int msgLength;
int n; //对象标号
}
/**
* @功能描述:IP网络数据Tcp报文的发送
* @编写人:
* @修改人:
* @编写日期:2013年5月10号
*/
import java.net.*;
import java.io.*;
public class TcpSend {
static String RemortIp; //远程主机IP
static int RemortPort; //远程主机端口
static int LocalPort; //本地主机端口
static String FileUrl; //文件绝对路径
static Socket SendSocket; //用于传输 的套接字
public static void main(String[] args) {
RemortIp="125.219.39.151";
RemortPort=7777;
LocalPort=7778;
TcpMessage message = new TcpMessage();
try
{
String dirPath="D:\\娱乐\\Music\\";
message.fileName="林志炫 - 散了吧.mp3";
//创建Socket
SendSocket=new Socket(RemortIp,RemortPort,InetAddress.getLocalHost(),LocalPort);
FileInputStream fin =new FileInputStream(dirPath+message.fileName);
ObjectOutputStream dataOutput = new ObjectOutputStream(new BufferedOutputStream(SendSocket.getOutputStream()));
//n表示这是第几个对象
int n=0;
while((message.msgLength=fin.read(message.msg,0,1024))!=-1) //将文件信息读入对象
{
n++;
message.n=n;
dataOutput.writeObject(message); //写入套接字
System.out.println(message.n);
}
fin.close();
dataOutput.close();
SendSocket.close();
System.out.println("文件 "+message.fileName+"发送完毕!");
} catch (IOException e)
{
e.printStackTrace();
System.out.println("文件"+message.fileName+"传输出错!");
}
}
}
import java.net.*;
import java.util.Scanner;
import java.io.*;
public class TcpReceive {
static ServerSocket S_socket;
static Socket socket;
public static void main(String[] args) throws Exception {
ObjectInputStream is = null;
int n=0;
try {
S_socket=new ServerSocket(7777);
socket=S_socket.accept(); //监听端口
is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));
while(true)
{
Object obj = is.readObject();
TcpMessage msg=new TcpMessage();
msg=(TcpMessage)obj;
//将对象中的数据写入文件
FileOutputStream fout =new FileOutputStream(dirPath+msg.fileName,true);
if(msg.msgLength<1024)
{
fout.write(msg.msg,0,msg.msgLength);
System.out.println(msg.n+" 1");
fout.close();
break;
}
else
{
fout.write(msg.msg,0,msg.msgLength);
System.out.println(msg.n+" 2");
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
is.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}