socket实现Telnet实验报告
- 格式:doc
- 大小:125.50 KB
- 文档页数:7
socket编程实验报告《Socket编程实验报告》在计算机网络通信中,Socket编程是一种常见的通信方式,它可以在不同的计算机之间实现数据的传输和通信。
本次实验旨在通过Socket编程实现一个简单的客户端和服务器端通信,并对其进行测试和分析。
实验环境:- 操作系统:Windows 10- 开发工具:Visual Studio Code- 编程语言:Python实验步骤:1. 设计客户端和服务器端的通信协议2. 编写客户端和服务器端的代码3. 运行客户端和服务器端,并进行通信测试4. 分析通信过程中的数据传输情况实验结果:经过实验,我们成功实现了一个简单的客户端和服务器端通信程序。
在测试过程中,我们发现数据可以正常地在客户端和服务器端之间传输,而且通信过程稳定可靠。
分析:通过本次实验,我们深入了解了Socket编程的基本原理和实现方式。
Socket编程可以灵活地实现不同计算机之间的通信,为网络通信提供了重要的技术支持。
在实际应用中,Socket编程可以用于实现各种网络通信功能,如网页浏览、文件传输、视频流等。
总结:通过本次实验,我们对Socket编程有了更深入的了解,并掌握了基本的编程技巧和调试方法。
Socket编程是网络通信中的重要技术,对于计算机网络领域的学习和应用具有重要的意义。
希望通过今后的实践和学习,我们能够进一步深化对Socket编程的理解,为网络通信技术的发展做出贡献。
通过本次实验,我们对Socket编程有了更深入的了解,并掌握了基本的编程技巧和调试方法。
Socket编程是网络通信中的重要技术,对于计算机网络领域的学习和应用具有重要的意义。
希望通过今后的实践和学习,我们能够进一步深化对Socket编程的理解,为网络通信技术的发展做出贡献。
Java实现基于Socket的Telnet服务实验报告姓名:冯富超学号:40605010105组员:40605010104 杨磊40605010106 冯琳琳40605010107 张文轩40605010108 曹斌40605010109 邸永强40605010114 李茂林40605010115 李胤超班级:计算机科学与技术06级01班注:本次实现有本组成员8人合作完成其中冯富超,杨磊完成实验方案分析,设计和各个模块的规划。
冯琳琳,张文轩完成各个模块的开发。
曹斌,邸永强完成各个模块之间的组合和衔接。
李胤超,李茂林负责完成程序代码的测试和完善。
一、实验目的本实验基于Telnet协议,使用Socket套接口,用java语言,实现Telnet服务。
目的使学生了解Telnet协议、掌握在java编程中对telnet协议的使用、和使用Socket的编程技术及其远程登录网络访问服务的技术。
Telnet协议是TCP协议族中的一员,是Internet远程登录服务的标准协议,远程登录是指用户使用Telnet命令,使自己的计算机成为远程主机的一个仿真终端的过程。
这个程序是基于Socket编程实现的Telnet客户端的原理,可以实现基本的Telnet远程访问功能。
二、项目内容本程序通过java语言,基于Socket套接口,实现Telnet基本服务。
三、实验环境局域网中两台PC预装java运行环境jdk,采用IPV4协议,开启Telnet相关服务,四、设计方案程序分为三个模块,初始化连接模块,监听网络信息收发数据模块,运行模块。
初始化模块主要是初始化Socket并在两台pc机建立socket连接。
监听网络信息收发数据模块通过监听线程实现对Socket连接的监听,并收发通信数据。
运行模块主要有两个线程实现,线程中调用Io流实现数据的传输。
五、实现流程1.实例化SocketTelnet是基于TCP的连接,因而在客户端使用.Socket类来实现。
Socket编程实验报告一、程序代码(1)服务器端#include <stdio.h>#include <Winsock2.h>#pragma comment(lib, "ws2_32.lib")void main(){ WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) { return; }if ( LOBYTE( wsaData.wVersion ) != 1 ||HIBYTE( wsaData.wVersion ) != 1 ){ WSACleanup( );return; }SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));// 绑定端口listen(sockSrv,SOMAXCONN); //SOMAXCONN由系统确定请求数SOCKADDR_IN addrClient;// 连接上的客户端ip地址int len=sizeof(SOCKADDR);while(1){SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);// 接受客户端连接,获取客户端的ip地址char sendBuf[50];sprintf(sendBuf,"Welcome %s tohere!",inet_ntoa(addrClient.sin_addr));// 组合消息发送出去send(sockConn,sendBuf,strlen(sendBuf)+1,0);// 发送消息到客户端char recvBuf[50]; recv(sockConn,recvBuf,50,0);// 接受客户端消息printf("%s\n",recvBuf);closesocket(sockConn);WSACleanup();//断开连接}}(2)客户端代码#include <stdio.h>#include <Winsock2.h>#pragma comment(lib, "ws2_32.lib")void main(){WORD wVersionRequested;WSADATA wsaData;//WSAata用来存储系统传回的关于WinSocket的资料。
实验报告课程名称实验项目名称实验时间(日期及节次)专业计算机网络Socket通讯第 1节-第 2节计算机科学与技术学生所在学院计算机学院年级姓名实验室名称实验成绩教师署名2011级学号20111913陈声晓指导教师战扬4-513计算机 3机房分 1室附带:综合实验预习状况操作技术实验报告创新能力综合成绩黑龙江大学教务处黑龙江大学计算机科学与技术专业、软件工程专业《计算机网络》课程实验报告学号20111913姓名陈声晓班级 1 班实验时间 4.16-4.30 第 1 节-第 2 节实验名称Socket 通讯实验内容在一台计算机上实现两个程序的通讯一、实验目的掌握 Windows 通讯程序的编写,通讯原理,实质编写通讯程序,本试验是后续实验的基础。
做到在一台计算机上实现两个程序的通讯。
二、实验环境Windows xp/7三、主要设计思想与算法1.服务器创立 socket ,并规定通讯的端口号 ( 大于 1024) ,等候客户端的连结。
2.客户端创立 socket ,经过端口号连结服务端。
3.客户端向服务端发送接收数据。
4.服务端接收发送数据。
5.通讯结束,客户端和服务端封闭 socket 。
6.Socket 通讯流程:四、实验结果(测试用例、实验结果)五、实验总结计算机网络通讯利用java 语言编写时,用到的技术室socket 技术。
任何一个socket 程序都起码包括客户端程序和服务端程序。
经过IP地点和端口号,实现了两台计算机之间的链接,而后才能够依据详细需要实现通讯。
运转时先运转服务器程序,不难理解,客户端没有开放,就没法连结。
socket通信实验报告socket通信实验报告一、引言在计算机网络领域,Socket通信是一种常见的网络通信方式。
通过Socket,可以实现不同计算机之间的数据传输和通信。
本实验旨在通过搭建一个简单的Socket通信系统,了解Socket通信的基本原理和实现方式,并通过实验验证Socket通信的可行性和效果。
二、实验目的1. 了解Socket通信的基本原理和概念;2. 掌握Socket通信的编程实现方法;3. 验证Socket通信的可行性和效果。
三、实验环境和工具1. 实验环境:Windows操作系统;2. 编程语言:Python;3. 开发工具:PyCharm。
四、实验步骤1. 创建Socket服务器:首先,我们需要创建一个Socket服务器,用于监听客户端的连接请求。
在Python中,可以使用socket库来实现Socket服务器的创建。
通过指定IP地址和端口号,服务器可以监听指定的网络地址。
在实验中,我们选择使用本地回环地址(127.0.0.1)和一个自定义的端口号(例如8888)来创建Socket服务器。
2. 等待客户端连接:Socket服务器创建成功后,需要等待客户端的连接请求。
服务器通过调用socket的accept()方法来等待客户端的连接。
一旦有客户端连接成功,服务器将返回一个新的Socket对象,用于与客户端进行通信。
3. 客户端连接:在另一台计算机上,我们创建一个Socket客户端,用于连接到服务器。
客户端通过指定服务器的IP地址和端口号,调用socket的connect()方法来与服务器建立连接。
4. 数据传输:一旦客户端和服务器成功建立连接,它们就可以进行数据传输了。
在实验中,我们可以通过客户端向服务器发送数据,服务器接收并处理数据,然后将处理结果返回给客户端。
5. 断开连接:当数据传输完成后,客户端和服务器可以选择断开连接。
在Python中,可以通过调用socket的close()方法来关闭连接。
实验报告实验一 socket编程一、实验目的通过socket程序的编写、调试,掌握socket编程的基本方法,了解客户端与服务器端的特点,掌握并熟悉运用socket类与serversocket类。
二、实验内容①学习socket编程使用的类和接口,着重掌握基于tcp协议的socket。
②编写服务器端的应用程序③编写客户端的应用程序④实现服务器端与客户端的交互三、实验代码1.服务器端程序过程:在端口5000上创建一个等待连接的serversocket对象server:server=newserversocket(5000);接着调用server对象的accept()方法等待某客户程序发出连接请求。
该方法一直阻塞直到有客户连接到带端口。
一旦有客户发送正确请求,则连接成功,accept()方法返回一个socket对象,于是得到了一个新的用于通信的socket对象,通信链路建立成功。
然后利用socket类提供的方法创建socket对象的输入流和输出流。
此后即于客户端进行通信,直到客户端断开连接即关闭各个流结束通信。
代码如下:import .*;import java.io.*;class aa{static public void main (string args[]) throws ioexception {serversocket server=null;socket socket=null;inputstream is=null;outputstream os=null;datainputstream in=null;printstream out=null;try{ //在端口5000注册服务server=new serversocket(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= new datainputstream(is); out =new printstream(os);//表示向对方输出string str=in.readline();//逐行读取do{system.out.println(客户端说:+ str); str=in.readline();}while(str.trim().equals(bye)) //如果是“bye”就退出system.out.println(客户想要离开); }catch(exception e) //捕获程序异常{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编程综合实验课程名称:网络编程技术实验类型:□演示性□验证性□操作性□设计性■综合性专业:软件工程班级:2010-2 姓名:杨腾飞学号:2010082225 实验日期:2013年5月13日实验地点:多媒体机房(1)实验学时:4 实验成绩:指导教师签字: 2013 年 5 月 28 日一实验目的与要求实验目的:认真阅读课程代码,并在通信功能之上设计和实现一个简单的聊天程序。
实验内容:练习使用socket编写客户/服务程序,掌握socket的使用方法,熟悉并掌握多线程的概念二总的设计思想及语言编程语言:C设计思想:让客户端与服务器建立链接即可通信,服务端建立套接字的大致步骤:1.建立socket。
2。
bind 绑定特定的端口。
3。
listen 监听特定的端口。
4.accept,当有客户端连接服务器端口时,accept接收信息,并返回新的套接字描述符,提供给操作 5.根据实际需求,write,read,send,recv等操作6.关闭套接字。
客户端大致步骤:1.创建socket.2.根据服务器地址,connect连接到特定服务器。
3.write,read等读写操作。
4.关闭套接字。
三源程序/****************************服务器端*********************/#include<winsock2.h>#include<stdio.h>#include<string.h>void main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested=MAKEWORD(1,1);err=WSAStartup(wVersionRequested,&wsaData);if(err!=0){return;}if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1) {WSACleanup();return;}SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));listen(sockSrv,6);char sendBuf[100];char recvBuf[100];char tempBuf[100];SOCKADDR_IN addrClient;int len=sizeof(SOCKADDR);while(1){printf("waiting for client\n");SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); recv(sockConn,tempBuf,100,0);if(tempBuf[0]!='q'){sprintf(recvBuf,"%s say: %s",inet_ntoa(addrClient.sin_addr),tempBuf); printf("%s\n",recvBuf);printf("please input your data,server:\n");gets(sendBuf);send(sockConn,sendBuf,strlen(sendBuf)+1,0);}else{printf("%s request to quit the chat platform",inet_ntoa(addrClient.sin_addr)); send(sockConn,"q",strlen("q")+1,0);closesocket(sockConn);break;}}closesocket(sockSrv);WSACleanup();}/****************************客户端*********************/#include<winsock2.h>#include<stdio.h>#include<string.h>//#pragma comment(lib,"ws2_32.lib")void main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested=MAKEWORD(1,1);err=WSAStartup(wVersionRequested,&wsaData);if(err!=0){return;}if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1){return;}while(1){SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);char sendBuf[100];char tempBuf[100];char recvBuf[100];int len=sizeof(SOCKADDR);connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));printf("please input your data,client:\n");gets(sendBuf);printf("waiting for server\n");send(sockClient,sendBuf,sizeof(sendBuf)+1,0);recv(sockClient,tempBuf,100,0);if(tempBuf[0]!='q'){sprintf(recvBuf,"server say: %s",tempBuf);printf("%s\n",recvBuf);}else{printf("the server has been closed!\n");send(sockClient,"q",strlen("q")+1,0);break;}}// closesocket(sockClient);WSACleanup();}四自我评价与总结此次实验是对Socket的一个应用,让我更深的了解了Socket 函数的作用及使用方法。
本科实验报告课程名称:计算机网络基础姓名:计算机学院学院:软件工程系:专业:软件工程学号:陆魁军陈辉指导教师:2013年10月20日浙江大学实验报告课程名称:计算机网络基础实验类型:普通实验实验项目名称:熟悉网络命令及用SOCKET编程实现mini FTP client / Server 学生姓名:专业:软件工程学号:同组学生姓名:无指导老师:陆魁军实验地点:例如:曹西软件学院机房实验日期:2013年9月14日开始一、实验目的和要求:在PC机上熟悉常用网络命令;熟悉掌握windows下的Socket编程,并应用Socket API 实现mini FTP client/ Server。
二、实验内容和原理在PC机上熟悉常用网络命令: Ping.exe,Netstat.exe, Telnet.exe, Tracert.exe, Winipcfg.exe,Arp.exe, Ftp.exe, Ipconfig.exe, Net.exe, Route.exe,选择5个或5个以上的命令书写实验报告。
使用Win32 Socket 函数实现,不能使用MFC的Csocket类库(MFC的Csocket 类库不能在LINUX、UNIX等环境下使用,跨平台性差),不能用C++ builder开发(编程量太少,C++ builder已完成了很多SOCKET代码的编写)。
1.mini FTP client/ Server要求:在客户端至少实现GET file, PUT file,CD( change Directory), PWD( display current directory in server)功能。
独立完成mini FTP client端及Server端程序。
mini FTP client/ Server不一定要使用标准FTP协议,不一定要与现有的标准FTP server互通,也不一定要与现有的标准FTP Client(例如LEAP FTP)互通。
Java实现基于Socket的Telnet服务
实验报告
姓名:冯富超
学号:40605010105
组员:40605010104 杨磊
40605010106 冯琳琳
40605010107 张文轩
40605010108 曹斌
40605010109 邸永强
40605010114 李茂林
40605010115 李胤超
班级:计算机科学与技术06级01班
注:本次实现有本组成员8人合作完成其中冯富超,杨磊完成实验方案分析,设计和各个模块的规划。
冯琳琳,张文轩完成各个模块的开发。
曹斌,邸永强完成各个模块之间的组合和衔接。
李胤超,李茂林负责完成程序代码的测试和完善。
一、实验目的
本实验基于Telnet协议,使用Socket套接口,用java语言,实现Telnet服务。
目的使学生了解Telnet协议、掌握在java编程中对telnet协议的使用、和使用Socket的编程技术及其远程登录网络访问服务的技术。
Telnet协议是TCP协议族中的一员,是Internet远程登录服务的标准协议,远程登录是指用户使用Telnet命令,使自己的计算机成为远程主机的一个仿真终端的过程。
这个程序是基于Socket编程实现的Telnet客户端的原理,可以实现基本的Telnet远程访问功能。
二、项目内容
本程序通过java语言,基于Socket套接口,实现Telnet基本服务。
三、实验环境
局域网中两台PC预装java运行环境jdk,采用IPV4协议,开启Telnet相关服务,四、设计方案
程序分为三个模块,初始化连接模块,监听网络信息收发数据模块,运行模块。
初始化模块主要是初始化Socket并在两台pc机建立socket连接。
监听网络信息收发数据模块通过监听线程实现对Socket连接的监听,并收发通信数据。
运行模块主要有两个线程实现,线程中调用Io流实现数据的传输。
五、实现流程
1.实例化Socket
Telnet是基于TCP的连接,因而在客户端使用.Socket类来实现。
Socket通常也称作“套接字”,用于描述IP地址和端口。
应用程序通常通过“套接字”向网络发出请求或者应答网络请求。
本程序中使用一个描述主机地址的字符串和Telnet的端口号,得到一个Socket。
String host="";
int port=110;
Socket socket = new Socket(host, port);
2.监听线程
本程序中,使用线程对通信过程监听。
在线程类中,定义了两个I/O流,输入流和输出流。
用输入流实例化一个BufferedReader类的实例,将输入流包装进BufferedReader类,可调用该类的readLine方法按行读取数据。
BufferedReader reader = new BufferedReader(new InputStreamReader(is)); PrintStream ps = new PrintStream(os);
在线程的运行主体run方法将输入流的数据传输到输出流中。
在本例中运行有两个线程,输入的可能是服务器信息,也可能是本地机有控制台输入的信息(System.in),
while ((line = reader.readLine()) != null) {
ps.print(line);
ps.print("\r\n");
ps.flush();
}
3.运行线程
最后实例化两个线程类,并调用Thread类的start方法开始运行线程。
new Listener(socket.getInputStream(), System.out).start();
new Listener(System.in, socket.getOutputStream()).start();
实例化线程的第一个线程的输入流为服务器信息,调用由Socket类的getInputStream 方法获取,输出流为控制台,调用System.out获取;第二个线程输入流为控制台输入,跳用System.in获取,输出流为输出到服务器,调用Socket类的getOutputStream方法获取。
六、实验结果及其分析
图1 通过本程序连到tom的pop邮件服务器。
Pop3是一个非常简单的邮件访问协议,在登陆时以明文的方式发送用户名和密码。
图1
程度成功连接到tom的pop邮件服务器,通过用户身份认证,因为我是刚注册的测试帐户,所以没有邮件list为0.
七、源程序
import .*;
import java.io.*;
public class TelnetClient {
String host=""; //Telnet服务器地址
int port=110; //端口号
public TelnetClient() {
System.out.println("Host " + host + "; port " + port);
try {
Socket socket = new Socket(host, port); //实例化套接字
new Listener(socket.getInputStream(), System.out).start();
//输出服务器信息到控制台
new Listener(System.in, socket.getOutputStream()).start();
//输出控制台信息到服务器
} catch(IOException ex) {
ex.printStackTrace(); //输出错误信息
return;
}
System.out.println("Connected Success");
}
class Listener extends Thread {
BufferedReader reader; //输入流
PrintStream ps; //输出流
Listener(InputStream is, OutputStream os) {
reader = new BufferedReader(new InputStreamReader(is)); //实例化输入流
ps = new PrintStream(os); //实例化输出流
}
public void run() {
String line;
try {
while ((line = reader.readLine()) != null) { //读取数据
ps.print(line); //输出数据
ps.print("\r\n");
ps.flush();
}
} catch(IOException ex) {
ex.printStackTrace();
}
}
}
public static void main(String[] argv) {
new TelnetClient();
}
}
八.心得与体会
通过本次课程设计,使我对Telnet协议有了进一步的了解,能够更加熟练的应用Socket网络编程,和java语言开发程序的技巧。
在程序设计方面,在界面设计以及数据加密技巧上有了进一步的提高,对java编程也有更为深入的了解。
可惜本人编程能力不高,在软件设计方面没有采用一套规范的过程,工作事倍功半,导致系统的某些功能仍然未能实现(但我相信现在已经拥有实现这些功能的能力),在这点上,本人在今后将更加注意设计过程的规范化。