实验七使用TCP 协议的Socket 网络程序设计Word下载.docx
《实验七使用TCP 协议的Socket 网络程序设计Word下载.docx》由会员分享,可在线阅读,更多相关《实验七使用TCP 协议的Socket 网络程序设计Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
Clientclient=newClient(port);
client.start();
}
publicstaticvoidmain(String[]args)
newServerClient(7777);
}//服务器线程
classServerextendsThread
{//使用端口号
intport;
ServerSocketserver;
Socketsocket;
//服务器输出流
DataOutputStreamoutStream=null;
//服务器输入流
DataInputStreaminStream=null;
publicServer(intport)
try
this.port=port;
server=newServerSocket(port);
catch(Exceptione)
System.out.println(e.toString());
publicvoidrun()
//监听用户连接
socket=server.accept();
outStream=newDataOutputStream(socket.getOutputStream());
inStream=newDataInputStream(socket.getInputStream());
//服务器准备好,可以进行通讯
System.out.println("
serverisok,pleasecontinue!
"
);
while(true)
//读取从客户端发送的信息
Stringstr=inStream.readUTF();
TheserverreceiveString:
+str);
//将信息重新向客户端发送
outStream.writeUTF(str);
}
classClientextendsThread
{//指定通讯端口
publicClient(intport)
this.port=port;
//建立同本地机子的socket连接
socket=newSocket(InetAddress.getLocalHost(),port);
//客户端准备好,可以进行通讯
clientisok,pleasecontinue!
byte[]b=newbyte[1024];
Stringstr="
;
//从键盘读取字符串
intm=System.in.read(b);
str=newString(b,0,0,m-1);
//向服务器发送信息
//从服务器读取信息
str=inStream.readUTF();
TheclientreceiveString:
}
运行结果:
客户端源程序:
publicclassSocketClient
{
Sockets=null;
publicSocketClient()
try{
init();
waitData();
}catch(Exceptione)
voidinit()throwsException
s=newSocket("
10.15.43.216"
8765);
inStream=newDataInputStream(s.getInputStream());
outStream=newDataOutputStream(s.getOutputStream());
s.setSoTimeout(3000);
voidwaitData()
Clientaccept:
str=Integer.toString(Integer.parseInt(str)+1);
break;
newSocketClient();
2、使用ServerSocket类和Socket类实现按如下协议通信的服务器端和客户端
程序。
服务器程序的处理规则如下:
1)向客户端程序发送VerifyingServer!
。
2)若读口令次数超过3次,则发送IllegalUser!
给客户端,程序退出。
否则
向下执行步骤3)。
3)读取客户端程序提供的口令。
4)若口令不正确,则发送PassWordWrong!
给客户端,并转步骤2),否则
向下执行步骤5)。
5)发送RegistrationSuccessful!
给客户端程序。
客户端程序的处理规则如下:
1)java.io.*;
pu读取服务器反馈信息。
2)若反馈信息不是VerifyingServer!
,则提示ServerWrong!
,程序退出。
否
则向下执行步骤3)
3)提示输入PassWord并将输入的口令发送给服务器。
4)读取服务器反馈信息。
5)若反馈信息是IllegalUser!
,则提示IllegalUser!
否则向下执
行步骤6)
6)若反馈信息是PassWordWrong!
,则提示PassWordWrong!
,并转步骤3),
否则向下执行步骤。
7)输出RegistrationSuccessful!
服务器:
publicclassMyServer
{
publicstaticvoidmain(Stringargs[])
{
try{
ServerSocketss=newServerSocket(7777);
System.out.println("
WebServerOK"
while(true)
{
Sockets=ss.accept();
Process1p=newProcess1(s);
Threadt=newThread(p);
t.start();
}
}
catch(IOExceptione)
System.out.println(e);
classProcess1implementsRunnable
Sockets;
inti=0;
DataOutputStreamoutStream=null;
publicProcess1(Sockets1)
try
{
s=s1;
inStream=newDataInputStream(s.getInputStream());
outStream=newDataOutputStream(s.getOutputStream());
catch(Exceptione)
{
System.out.println(e.toString());
}
publicvoidrun()
try
Stringfay_s1=newString("
VerifyingServer!
Stringfay_s3=newString("
PassWorldWrong!
Stringfay_s4=newString("
RegistrationSuccessful!
outStream.writeUTF(fay_s1);
for(i=0;
i<
3;
i++)
{
Stringfay_s2=inStream.readUTF();
if(!
fay_s2.equals("
19880801"
))
outStream.writeUTF(fay_s3);
else
{
outStream.writeUTF(fay_s4);
}
}
outStream.writeUTF("
IllegalUser!
System.exit
(1);
}
catch(Exceptione)
客户端:
publicclassMyClient
publicstaticvoidmain(Stringargs[])
try{
BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));
Sockets=newSocket("
127.0.0.1"
7777);
DataInputStreaminStream=null;
outStream=newDataOutputStream(s.getOutputStream());
Stringlr_s1=inStream.readUTF();
if(lr_s1.equals("
while(true)
System.out.println("
PleaseInputPassworld"
Stringlr_s2=in.readLine();
outStream.writeUTF(lr_s2);
Stringlr_s3=inStream.readUTF();
if(lr_s3.equals("
System.out.println("
System.exit
(1);
elseif(lr_s3.equals("
System.out.println(lr_s3);
else
else
Serverwrong!
catch(IOExceptione)
{}