------- android培训、java培训、期待与您交流! ----------
**需求2:拷贝文件
//****客户端:
class TCPClient{
public static void main(String[] args){
Socket s =new Socket("192.168.1.253",10000);
BufferedReaderbufr = new BufferedReader(new FileReader("g:\\demo.txt"));
PrintWriter pw = newPrintWriter(s.getOutputStream(),true);
String line = null;
while((line = bufr.readLine())!=null){
pw.println();
}
s.shutDownOutput();
BufferedReader bufIn = newBufferedReader(new InputStreamReader(
s.getInputStream()));
String retVal = bufIn.readLine();
sop(retVal);
bufr.close();
s.close();
}
}
//****服务端:
class TCPServer{
public staticvoid main(String[] args){
ServerSocketss = new ServerSocket(10000);
Socket s = ss.accept();
String ip =s.getInetAddress().getHostAddress();
sop(ip);
BufferedReaderbufIn = new BufferedReader(new InputStreamReader(
s.getInputStream()));
PrintWriter out = new PrintWriter(newFileWriter"copy.txt",true);
String line =null;
while((line = bufIn.readLine())!=null){
out.write(line);
}
PrintWriterpw = new PrintWriter(s.getOutputStream(),true);
pw.println("上传成功");
out.close();
s.close();
ss.close();
}
}
需求3:上传图片
//****客户端:
class TCPClient{
public staticvoid main(String[] args){
Socket s =new Socket("192.168.1.253",10000);
FileInputStreamfis = new FileInputStream("g:\\1.bmp");
OutputStream out = s.getOutputStream();
byte[] buf = new byte[1024];
int len = 0;
while((len = bufr.read())!=-1){
out.write(buf,0,len);
}
s.shutDownOutput();
InputStream in = s.getInputStream();
byte[] bufIn = new byte[1024];
int lenIn = in.read(bufIn);
sop(new String(bufIn,0,lenIn);
fis.close();
s.close();
}
}
//****服务端:
class TCPServer{
public staticvoid main(String[] args){
ServerSocketss = new ServerSocket(10000);
Socket s =ss.accept();
String ip =s.getInetAddress().getHostAddress();
sop(ip);
FileOutputStream fos = newFileOutputStream("g:\\copy.bmp");
InputStream in = s.getInputStream();
byte[] bufIn = new byte[1024];
int lenIn = 0;
while((lenIn=bufIn.read())!=-1){
fos.write(bufIn,0,lenIn)
}
OutputStreamoutIn = s.getOutputStream();
outIn.write("上传成功".getBytes());
fos.close();
s.close();
ss.close();
}
}
需求5:客户端并发登陆
客户端通过键盘录入用户名,服务端对这个用户名进行校验
如果用户存在,在服务端现实xxx已登录,并在客户端现实欢迎xxx
如果用户不存在,在服务端现实xxx正在尝试登陆,并在客户端现实xxx用户不存在
最多登陆三次。
//****校验端:
class Userimplements Runnable{
private Sockets;
public User(){}
publicUser(Socket s){
this.s=s;
}
public voidrun(){
try{
BufferedReaderbufrIn = new BufferedReader(
new InputStream(s.getInputStream()))
String name = bufrIn.readLine();
if(name==null){
sop("用户名为空");
break;
}
BufferedReaderbufr = new BufferedReader(new FileReader("user.txt"));
PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
String line = null;
booleanflag = false;
while((line= bufr.reanLine())!=null){
if(line.equals(name)){
flag= true;
break;
}
if(flag){
sop(name+"已登陆");
pw.println("欢迎"+name);
break;
}else{
sop(name+"正尝试登陆");
pw.println(name+"用户不存在");
}
}
s.close();
}catch(Exceptione){
thrownew RuntimeException("用户校验失败");
}
}
}
//****客户端:
class LoginClient{
public staticvoid main(String[] args){
Socket s =new Socket("192.168.1.253",10000);
BufferedReader bufr = new BufferedReader(newInputStreamReader(System.in)));
PrintWriterout = new PrintWriter(s.getOutputStream(),true);
BufferedReaderbufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
for(inti=0;i<3;i++){
Stringline = bufr.readLine();
if(line== null){
sop("用户名不能为空!");
break;
}
out.write(line);
String retVal = bufIn.readLine();
sop(retVal);
}
bufr.close();
s.close();
}
}
//****服务端:
class LoginServer{
public staticvoid main(String[] args){
ServerSocketss = new ServerSocket(10000);
while(true){
Socket s= ss.accept();
newThread(new User()).start();
}
}
}
域名解析
我们在上网输入一个www.网址时,电脑首先会在我们本地的C:\WINDOWS\system32\drivers\etc\hosts文件中寻找网址对应的地址
如果找不到,才会向DNS服务器发送请求,DNS服务器就会把网址对应的地址返回到我们电脑,电脑才拿着地址去访问我们要找的服务器。
如果电脑在本地文件中找到网址对应的地址了,他就不会向DNS服务器发送请求,而是按照在本地文件中找到的地址去访问服务器。 所以我们可以在本地文件中修改网址对应的地址,不让这网址去访问服务器
如果我们直接输入123.0.0.1之类的地址,电脑就不会查找本地文件和DNS服务器,而是直接访问