线程实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

线

程实验报告

黄澄宇320070911241

1.分析

(1)问题阐述,描述。

运用线程的方法设计一个ftp面向客户\服务器的网络应用程序,主要包括服务器端和客户端两方面的工作。

(2)问题分析。

针对问题要求,应该能够实现客户端和服务器端的功能。其中服务器端主要对客户端进行监听。客户端向服务器端进行提出请求。

(3)寻找揭发。

TCP\IP服务器端应用程序都是通过JA V A语言中提供的SeverSocket和Socket两个有关网络的类来实现。

SeverSocket类除了建立一个Sever之外,还通过accept()方法提供了随时监听客户端连接请求的功能。

2.设计。

在服务器端指定一个用来等待连接的端口号,在客户端规定一个主机和端口号,从而在客户端和服务器端创建Socket\ServerSocket实例。

现在服务器端生成一个ServerSocket实例的对象,随时监听客户端的连接请求。

当客户端需要连接时,相应的要生成一个Socket实例的对象,并发出连接请求,其在host参数指明该主机名,port参数指明端口号。

服务器端通过accept()方法接收到客户端的请求后,开辟一个接口与之进行连接,利用输入输出流,按照一定的协议对Socket 进行读写操作。

关闭输入输出流和Socket。

3.实现。

//FTPServer.java

import .*;

import java.io.*;

import java.util.*;

public class FTPServer

{

public static void main(String args[]) throws Exception

{

ServerSocket soc=new ServerSocket(5127);

System.out.println("FTP Server Started on Port Number ");

while(true)

{

System.out.println("Waiting for Connection..."); transferfile t=new transferfile(soc.accept());

}

}

}

class transferfile extends Thread

{

Socket ClientSoc;

DataInputStream din;

DataOutputStream dout;

transferfile(Socket soc)

{

try

{

ClientSoc=soc;

din=new DataInputStream(ClientSoc.getInputStream()); dout=new DataOutputStream(ClientSoc.getOutputStream()); System.out.println("FTP Client Connected...");

start();

}

catch(Exception ex)

{

}

}

void SendFile() throws Exception

{

String filename=din.readUTF();

File f=new File(filename);

if(!f.exists())

{

dout.writeUTF("File Not Found"); return;

}

else

{

dout.writeUTF("READY"); FileInputStream fin=new FileInputStream(f); int ch;

do

{

ch=fin.read();

dout.writeUTF(String.valueOf(ch));

}

while(ch!=-1);

fin.close();

dout.writeUTF("File Receive Successfully"); }

}

void ReceiveFile() throws Exception

{

String filename=din.readUTF();

if(pareTo("File not found")==0) {

return;

}

File f=new File(filename);

String option;

if(f.exists())

{

dout.writeUTF("File Already Exists"); option=din.readUTF();

}

else

{

dout.writeUTF("SendFile");

option="Y";

if(pareTo("Y")==0)

{

FileOutputStream fout=new FileOutputStream(f); int ch;

String temp;

do

{

temp=din.readUTF();

ch=Integer.parseInt(temp);

if(ch!=-1)

{

fout.write(ch);

}

}while(ch!=-1);

fout.close();

dout.writeUTF("File Send Successfully");

}

else

{

return;

}

相关文档
最新文档