Socket编程实验报告.docx

上传人:b****6 文档编号:5660006 上传时间:2022-12-30 格式:DOCX 页数:7 大小:186.37KB
下载 相关 举报
Socket编程实验报告.docx_第1页
第1页 / 共7页
Socket编程实验报告.docx_第2页
第2页 / 共7页
Socket编程实验报告.docx_第3页
第3页 / 共7页
Socket编程实验报告.docx_第4页
第4页 / 共7页
Socket编程实验报告.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

Socket编程实验报告.docx

《Socket编程实验报告.docx》由会员分享,可在线阅读,更多相关《Socket编程实验报告.docx(7页珍藏版)》请在冰豆网上搜索。

Socket编程实验报告.docx

Socket编程实验报告

实验报告

实验一Socket编程

一、实验目的

通过socket程序的编写、调试,掌握socket编程的基本方法,了解客户端与服务器端的特点,掌握并熟悉运用socket类与ServerSocket类。

2、实验内容

①学习socket编程使用的类和接口,着重掌握基于TCP协议的socket。

②编写服务器端的应用程序

③编写客户端的应用程序

④实现服务器端与客户端的交互

3、实验代码

1.服务器端程序

过程:

在端口5000上创建一个等待连接的ServerSocket对象server:

server=newServerSocket(5000);接着调用server对象的accept()方法等待某客户程序发出连接请求。

该方法一直阻塞直到有客户连接到带端口。

一旦有客户发送正确请求,则连接成功,accept()方法返回一个Socket对象,于是得到了一个新的用于通信的Socket对象,通信链路建立成功。

然后利用Socket类提供的方法创建Socket对象的输入流和输出流。

此后即于客户端进行通信,直到客户端断开连接即关闭各个流结束通信。

代码如下:

import.*;

importjava.io.*;

classaa

{

staticpublicvoidmain(Stringargs[])throwsIOException

{

ServerSocketserver=null;

Socketsocket=null;

InputStreamis=null;

OutputStreamos=null;

DataInputStreamin=null;

PrintStreamout=null;

try

{//在端口5000注册服务

server=newServerSocket(5000);

socket=server.accept();//侦听连接请求,等待连接

System.out.println("**********************服务器端界面*************************");

System.out.println("与客户端连接成功!

");

System.out.println("");

System.out.println("对话内容为:

");

System.out.println("");

System.out.println("等待客户发送信息.....");

//获取对应的Socket的输入/输出流

is=socket.getInputStream();

os=socket.getOutputStream();

//建立数据流

in=newDataInputStream(is);

out=newPrintStream(os);//表示向对方输出

out.println("Welcome!

");//表示向对方输出

Stringstr=in.readLine();//逐行读取

do

{

System.out.println("客户端说:

"+str);

str=in.readLine();

}while(str.trim().equals("BYE"))//如果是“BYE”就退出

System.out.println("客户想要离开");

}

catch(Exceptione)//捕获程序异常

{

System.out.println("Error:

"+e);

}

finally

{

is.close();//关闭输入流

os.close();//关闭输出流

in.close();//关闭数据输入流

socket.close();//关闭socket

}

}

}

2.客户端程序

过程:

首先创建一个指向服务器的指定端口号(5000)的Socket对象socket:

socket=newSocket("localhost",5000);此时服务器指定为本地计算机,若要在网络中指定服务器,只需要将参数localhost改成相应的服务器名或者IP地址即可。

然后程序利用Socket类提供的方法创建Socket对象的输入流和输出流。

此后即于服务器通信,断开连接即关闭各个流结束通信。

代码如下:

import.*;

importjava.io.*;

classbb

{

staticpublicvoidmain(Stringargs[])throwsIOException

{

Socketsocket=null;

InputStreamis=null;

OutputStreamos=null;

DataInputStreamin=null;

PrintStreamout=null;

Stringd=null;

try

{//向本地服务器申请链接

//注意端口号要与服务器保持一致:

5000

socket=newSocket("localhost",5000);

System.out.println("********************客户端界面************************");

System.out.println("与服务器连接成功!

");

System.out.println("");

System.out.println("对话内容为:

");

System.out.println("");

System.out.println("请输入信息:

");

//获取对应的Socket的输入/输出流

is=socket.getInputStream();

os=socket.getOutputStream();

//建立数据流

in=newDataInputStream(is);

out=newPrintStream(os);

d=in.readLine();

System.out.println("服务器说:

"+d);

bytea[]=newbyte[100];

System.in.read(a);

Stringb=newString(a,0);

b=b.trim();//去点输入的第一个字符前的空格

while(!

b.equals("BYE"))

{

out.println("请输入您要发送的信息:

"+b);//如果输入的不是“BYE”,就向对方输出

System.in.read(a);

b=newString(a,0);

b=b.trim();

}

out.println(b);

}

catch(Exceptione)//捕获程序异常

{

System.out.println("Error:

"+e);

}

finally

{

is.close();//关闭输入流

os.close();//关闭输出流

socket.close();//关闭socket

}

}

}

四、程序运行过程

1.运行客户端程序,当客户端程序运行后,服务器端立即显示连接成功并等待客户端发送信息,结果如下图.

服务器程序的运行结果

客户端程序运行后的结果

2.客户端向服务器端发送信息,如客户端发送信息“123456789”,服务器端显示客户端发来的信息,运行结果如下图。

3.当客户端向服务器端发送信息“BYE”时,即关闭连接,如下图所示。

 

五、实验心得

首先我把类aa申明成为public类型,运行出现以下问题:

类bb是公共的,应在名为bb.java的文件中申明。

经过java书籍知:

没有包的类不能被申明为public。

服务器端的端口号必须与客户端的端口号一致。

若不一致,会提示“.ConnectException:

Connectionrefused:

connect”;但是服务器端获取的不一定就是客户端的端口号,服务器端会在任意一个空闲的端口创建socket对象,与客户端连接;而客户端获取的端口号即为服务器提供的端口号.

端口号的选择一定要在1024以上,我先试图在100端口建立连接,运行程序时抛出BindException异常,即端口已被绑定。

选择1024以上就是怕出现BindException异常,当并不是10245以下所有端口号都被绑定了。

在实验过程中,我巩固了以前基础的java知识。

初步熟悉并掌握了try-catch-finally的结构,学习了解异常处理的作用。

了解Socket类与ServerSocket类的作用与用法,会用一些Socket类与ServerSocket类的重要方法。

并且初步了解java中用来实现客户端TCP操作Socket类,这个类本身使用直接代码通过主机操作系统的本地TCP栈进行通信。

 

 

WelcomeTo

Download!

!

!

 

欢迎您的下载,资料仅供参考!

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1