socket实验报告
- 格式:doc
- 大小:414.51 KB
- 文档页数:6
课程实验报告课程名称:专业班级:计算机科学与技术1003班学号:姓名:鲁辰指导教师:报告日期:计算机科学与技术学院目录1实验二 Socket 编程(E-Mail)................... 错误!未定义书签。
实验目的....................................... 错误!未定义书签。
实验要求....................................... 错误!未定义书签。
实验内容....................................... 错误!未定义书签。
实验过程....................................... 错误!未定义书签。
需求分析................................... 错误!未定义书签。
界面....................................... 错误!未定义书签。
写信....................................... 错误!未定义书签。
收信....................................... 错误!未定义书签。
实验体会....................................... 错误!未定义书签。
2 实验2 网络组建与实施............................. 错误!未定义书签。
实验目的....................................... 错误!未定义书签。
实验环境、要求................................. 错误!未定义书签。
实验实验环境............................... 错误!未定义书签。
实验要求.................................... 错误!未定义书签。
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编程班级:软件112 姓名:周航学号: 1110290054 上机时间: 2013.03.03. 指导教师:王华一、实验内容或题目:(1).套接字相关类的使用1.创建一个具有服务器IP地址和端口号的Socket对象。
Socket soc=newSocket("localhost",4001);2.客户端接受输入。
3.客户端向服务器发送请求。
4.关闭PrintStream和Socket对象(2).修改本阶段的第一部分中完成的程序,是服务器将向客户端返回响应。
二、实验目的与要求:掌握套接字相关类的使用,掌握Web相关类的使用。
三、实验步骤与源程序:(1)实验步骤a) 编辑FClient.java和FServer.javab) 编译FClient.java和FServer.javac) 先运行FServer.java等待客户端请求,然后运行FClient.java(2)源代码题目1FClient.javapublic class FClient {public static void main(String[] args) throws Exception {Socket soc=new Socket("localhost",4001);BufferedReader br=new BufferedReader(newInputStreamReader(System.in));System.out.println("请输入消息至服务器");String message="";String temp;while(!(temp=br.readLine()).equals("send")){message=message+temp+"\n";}PrintStream ps=new PrintStream(soc.getOutputStream());ps.print(message);ps.close();soc.close();}}FServer.javapublic class FServer {public static void main(String []args)throws Exception{ServerSocket ss=new ServerSocket(4001);Socket soc=ss.accept();BufferedReader br=new BufferedReader(newInputStreamReader(soc.getInputStream()));String message="";String temp=null;do{temp=br.readLine();if(temp==null){break;}message=message+temp;}while(true);br.close();PrintStream ps=new PrintStream(new FileOutputStream("message.txt"));ps.println(message);ps.close();System.out.println("已存储消息");}}题目2:FClient.javapublic class FClient {public static void main(String[] args) throws Exception {Socket CTS=new Socket("localhost",9090);//将数据输入流连接到socket上DataInputStream IFS=new DataInputStream(CTS.getInputStream());//将数据输出流连接到socket上PrintStream OTS=new PrintStream(CTS.getOutputStream());//将信息放到Socket输出流中OTS.print("尝试连接服务器");System.out.println("尝试连接服务器");//清空缓冲区,立即发送OTS.flush();boolean goon=true;while(goon){String instr=IFS.readUTF();if(instr.equals("连接成功")){System.out.println("连接成功");goon=false;}}//退出循环IFS.close();OTS.close();CTS.close();}}FServer.javapublic class FServer {public static void main(String []args)throws Exception{System.out.println("等待连接");ServerSocket ss=new ServerSocket(9090);//侦听来自客户端的请求Socket CTC=ss.accept();//关联socket 输入输出流DataInputStream IFC=new DataInputStream(CTC.getInputStream());DataOutputStream OTC=new DataOutputStream(CTC.getOutputStream());OTC.writeUTF("连接成功");OTC.flush();IFC.close();OTC.close();ss.close();}}四、测试数据与实验结果题目1题目2五、总结:通过这次实验,我初步了解了Socket的使用,datagramSocket类可以实现面向连接的通信和无连接的客户端和服务器套接字,DatagramPacket可以构造udp无连接的数据报报文。
通信与信息工程学院2013 /2014 学年第二学期软件设计实验报告模块名称TCP/IP Socket软件设计专业电子信息工程学生班级B110112学生学号B********学生姓名李萍指导教师赵建立,高建国,李虹,余雪勇,姚锡林获取计算机的名称和IP地址1.实验过程新建一个工程,选择CLR空项目,命名为“B11011202”,点击确定。
往工程添加源代码B11011202.cpp,点击运行得出结果。
2.关键代码#using<System.dll>using namespace System;using namespace System::Collections;using namespace System::Net;void main(){String^ hostname=Dns::GetHostName()->ToString();IPHostEntry^ ipEntry = Dns::GetHostEntry(hostname);array<IPAddress^>^ addr = ipEntry->AddressList;Console::WriteLine("Host Name:" + hostname);for (int i= 0; i < addr->Length; i++){Console::WriteLine("IP Address {0}: {1} ", i,addr[i]->ToString());}Console::Read();}3.实验结果及其分析基于TCP模式的通信程序1.实验过程对Socket服务端才用多线程框架,对每一个客户端的连接分配一个子线程,程序采用默认端口,一旦运行便对端口开始监听,程序功能分为三部分,包括SocketServer的配置以及监听,数据的接收和数据的发送。
计算机网络实验报告班级:姓名:学号:实验一一.实验目的及要求编写程序,模拟距离矢量路由算法的路由表交换过程,演示交换后的路由表的变化。
二.实验原理距离矢量路由算法是这样工作的:每个路由器维护一张路由表(即一个矢量),它以网络中的每个路由器为索引,表中列出了当前已知的路由器到每个目标路由器的最佳距离,以及所使用的线路。
通过在邻居之间相互交换信息,路由器不断地更新他们的内部路由表。
举例来说,假定使用延迟作为“距离”的度量标准,并且该路由器发送一个列表,其中包含了他到每一个目标路由器的延时估计值;同时,他也从每个邻居路由器接收到一个类似的列表。
假设一个路由器接收到来自邻居x的一个列表,其中x(i)表示x估计的到达路由器i所需要的时间。
如果该路由器知道他到x的延时为m毫秒,那么他也知道在x(i)+m毫秒之间内经过x可以到达路由器i。
一个路由器针对每个邻居都执行这样的计算,就可以发现最佳的估计值,然后在新的路由器表中使用这个最佳的估计值以及对应的输出路线。
三.源程序:#include "stdio.h"#include "stdlib.h"#include "malloc.h"#include "graphics.h"#include "dos.h"#define VERNUM 7typedef struct{int dis;int flag;int flag2;}RoutNode;char tmp[10];RoutNode data[VERNUM][VERNUM];void welcome();void InitRoutData(FILE* pfile);void PrintRoutData();void SendInf(int recv, int send);void Exchange();int main(){int start, end, i, j, m, n;FILE *pfile;welcome();pfile = fopen("1.txt", "r");if (pfile == NULL){printf("the file wrong,press any key to come back.\n");getch();return;}elseInitRoutData(pfile);fclose(pfile);printf("\nthe original route table:\n");for (i = 0; i<VERNUM; i++){printf("%c||", i + 65);for (j = 0; j < VERNUM; j++)if (data[i][j].dis > 0)printf("<%c %d> ", j + 65, data[i][j].dis);printf("\n");}PrintRoutData();getch();for (i = 0; i < VERNUM; i++){for (m = 0; m < VERNUM; m++)for (n = 0; n < VERNUM; n++)data[m][n].flag = 0;Exchange();PrintRoutData();getch();}printf("\nexchange the route table:\n");return 0;}void welcome(){int gdriver=DETECT,gmode;registerbgidriver(EGAVGA_driver);initgraph( &gdriver, &gmode,"C:\Win-TC");cleardevice();setbkcolor(CYAN);setviewport(0,0,639,479,1);clearviewport();setbkcolor(BLUE);setcolor(14);rectangle(200,200,440,280);setfillstyle(1,5);floodfill(300,240,14);settextstyle(0,0,2);outtextxy(50,30,"Distance Vector Routing Algorithm");setcolor(15);settextstyle(1,0,4);outtextxy(260,214,"Welcome to use!");line(0,80,640,80);getch();delay(300);cleardevice();}void InitRoutData(FILE* pfile){char num[10];int i = 0;char c;int m, n;fseek(pfile, 0, 0);for (m = 0; !feof(pfile) && m < 7; m++){for (n = 0; !feof(pfile) && n < 7; n++){while (!feof(pfile)){c = fgetc(pfile);if (c == ','){num[i] = '\0';data[m][n].dis = atoi(num);data[m][n].flag = 0;data[m][n].flag = 0;i = 0;break;} /*end of if*/else if ((c >= '0' && c <= '9') || c == '-'){num[i++] = c;} /*end of else if*/} /*end of while*/} /*end of for (n = 0*/} /*end of for (m = 0*/}void PrintRoutData(){int i, j;for (i = 0; i < VERNUM; i++){settextstyle(1,0,3);sprintf(tmp," %c",i + 65);outtextxy(i*80+50,130,tmp);outtextxy(10,160+i*40,tmp);}for (j = 0; j< VERNUM; j++){for (i = 0; i < VERNUM; i++){if (data[i][j].dis <= 0&&i!=j){if(data[i][j].flag2 ==1){setfillstyle(SOLID_FILL,5);bar(80*i+50,40*j+155,80*i+120,40*j+185);delay(50000);data[i][j].flag2 =0;}setfillstyle(SOLID_FILL,3);bar(80*i+50,40*j+155,80*i+120,40*j+185);settextstyle(1,0,2);sprintf(tmp,"-");outtextxy(80*i+65,40*j+165,tmp);}elseif(data[i][j].dis >=0){if(data[i][j].flag2 ==1){setfillstyle(SOLID_FILL,5);bar(80*i+50,40*j+155,80*i+120,40*j+185);delay(50000);data[i][j].flag2 =0;}setfillstyle(SOLID_FILL,3);bar(80*i+50,40*j+155,80*i+120,40*j+185);settextstyle(1,0,2);sprintf(tmp,"%d",data[i][j].dis);outtextxy(80*i+65,40*j+165,tmp);}} /*end of for (j = 0*/} /*end of for (i = 0*/}void SendInf(int recv, int send){int i;for (i = 0; i < VERNUM; i++){if (data[send][i].dis > 0&& data[send][i].flag!=1) { if (data[recv][i].dis <= 0&&recv!=i) {data[recv][i].dis = data[send][i].dis + data[recv][send].dis;data[recv][i].flag =1;data[recv][i].flag2 =1;}else if (data[recv][i].dis > data[send][i].dis + data[recv][send].dis){data[recv][i].dis = data[send][i].dis + data[recv][send].dis;data[recv][i].flag =1;data[recv][i].flag2 =1;}} /*end of if*/} /*end of for*/}void Exchange(){int i, j;for (i = 0; i < VERNUM; i++){for (j = 0; j < VERNUM; j++){if (data[i][j].dis > 0&& data[i][j].flag!=1){SendInf(i, j);} /*end of if*/} /*end of for (j = 0*/} /*end of for (i = 0*/}四、实验心得体会通过本次实验训练,我了解了距离矢量路由算法的基本原理,复习了C语言编程的内容,通过对路由算法的实现,加深了对路由表交换的理解。
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的网络聊天程序设计指导老师姓名学生姓名学生专业班级2011 —2012 学年第一学期实验课程名称:高性能计算机网络第一部分:实验分析与设计一、实验内容描述(问题域描述)内容:综合运用网络协议、编程语言、API和图形界面实现基于socket建立、监听、连接、发送数据和接收数据的网络通信程序。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)本程序采用基于面向无连接的UDP协议。
需要用到的函数有bind()、 sendto()、 recvfrom()等设计一个基本的网络服务器有以下几个步骤:1、初始化Windows Socket2、创建一个监听的Socket3、设置服务器地址信息,并将监听端口绑定到这个地址上4、开始监听5、接受客户端连接6、和客户端通信7、结束服务并清理Windows Socket和相关数据,或者返回第4步客户端程序框架类似三、主要仪器设备及耗材Windows XP 操作平台Microsoft Visual C++ 6.0 开发环境第二部分:实验调试与结果分析一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)上机前编写好代码,用VC 6.0 编译时发现出现链接错误二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)经分析,应该在“工程”-“设置”-“连接”下的“对象/库模块”中添加“ws2_32.lib”在运行时应该先启动服务器端程序,再启动客户端程序。
源代码以及运行结果截图见附页。
三、实验小结、建议及体会通过本次实验,巩固了自己的编程能力,把课堂上学习到的通信协议用到了实践中,对于各种通信协议的理解很有好处。
不足的的对于图形界面编程能力不足,今后应该在这方面多多下功夫。
服务器端代码:#include <stdio.h>#include <WINSOCK2.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_DGRAM, 0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);addrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(6666); //设置端口号为6666 bind(sockSrv, (sockaddr*)&addrSrv, sizeof(sockaddr));char sendBuf[100];char recvBuf[100];char tempBuf[200];int len = sizeof(sockaddr);SOCKADDR_IN addrClient;while(1){recvfrom(sockSrv, tempBuf, strlen(tempBuf), 0,(sockaddr*)&addrClient, &len);if('q' != tempBuf[0]){sprintf(recvBuf, "%s say: %s", inet_ntoa (addrClient.sin_addr), tempBuf);printf("%s\n", recvBuf);printf("please input your data: ");gets(sendBuf);sendto(sockSrv, sendBuf, strlen(sendBuf) + 1, 0, (sockaddr*) &addrClient, len);}else // 若接收到'q',则退出聊天{printf("%s request to quit the chat platform.\n",inet_ntoa(addrClient.sin_addr));sendto(sockSrv, "q", strlen("q") + 1, 0, (sockaddr*)&addrClient, len);break;}}closesocket(sockSrv);WSACleanup();}客户端代码:#include <stdio.h>#include <WINSOCK2.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 sockClient = socket(AF_INET, SOCK_DGRAM, 0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//htonl htons inet_addr inet_ntoaaddrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(6666); //设置同样的端口号6666 char sendBuf[100];char tempBuf[200];char recvBuf[100];int len = sizeof(sockaddr);while(1){printf("please input your data: ");gets(sendBuf);sendto(sockClient, sendBuf, strlen(sendBuf) + 1, 0, (sockaddr*)&addrSrv, len);recvfrom(sockClient, tempBuf, strlen(tempBuf), 0, (sockaddr*)&addrSrv, &len);if('q' != tempBuf[0]){sprintf(recvBuf, "%s say: %s", inet_ntoa(addrSrv.sin_addr), tempBuf);printf("%s\n", recvBuf);}else // 若接收到'q',则退出聊天{printf("the server has been closed!\n");sendto(sockClient, "q", strlen("q") + 1, 0, (sockaddr*)&addrSrv, len);break;}}closesocket(sockClient);WSACleanup();}运行结果截图:。
《网络与通信》课程实验报告实验2:Socket通信编程附件1:1、运行环境: win7 ,win8,win10等操作系统。
2、编译:通过Eclipse编译,无任何错误警告。
3、实现环境:Eclipse附件2:使用方法:1、打开服务端。
2、打开客户端。
3、在两个端口都可以发送消息给另一个端口。
4、关闭两个端口。
(如图所示)程序文件列表:1、服务端代码:package cn、MyNET;import java、io、*;import java、net、*;import java、util、*;import java、awt、*;import java、awt、event、ActionEvent;import java、awt、event、ActionListener;import javax、swing、*;import java、awt、*;import javax、swing、*;public class Server extends JFrame{/****/private static final long serialVersionUID = 4377172896920510045L;//输入消息框private JTextField jtf = new JTextField();//显示框private JTextArea jta = new JTextArea();//IO流private DataInputStream inputFromClient;private DataOutputStream outputToClient;@SuppressWarnings("unused")public static void main(String[] args){new Server();}public Server(){JPanel p = new JPanel();p、setLayout(new BorderLayout()); //设置格式布局p、add(new JLabel("请输入您要发送的消息"), BorderLayout、WEST); p、add(jtf, BorderLayout、CENTER);jtf、setHorizontalAlignment(JTextField、RIGHT); //设置对齐方式setLayout(new BorderLayout());add(p, BorderLayout、NORTH);add(new JScrollPane(jta), BorderLayout、CENTER);jtf、addActionListener(new TextFieldListener()); //设置侦听器接口setTitle("服务端");setSize(500, 300);setDefaultCloseOperation(JFrame、EXIT_ON_CLOSE);setVisible(true); //使可视化组建可见try {jta、append("服务器已正式启动启动时间:" + new Date() +'\n');jta、append("等待客户端连接"+'\n');//监听连接请求@SuppressWarnings("resource")Socket socket = new ServerSocket(8888)、accept();//IO流inputFromClient = new DataInputStream(socket、getInputStream());outputToClient = new DataOutputStream(socket、getOutputStream());//获取客户端的名称与 IPInetAddress inetAddress = socket、getInetAddress();String clientName = inetAddress、getHostName();String clientIP = inetAddress、getHostAddress();jta、append("客户端已经连接"+'\n');while(true){String fromClient = inputFromClient、readUTF();jta、append("客户端" + clientName + "; " + clientIP + "发来消息: "+fromClient);}} catch (IOException e) {jta、append("客户端已断开连接"+'\n');}}private class TextFieldListener implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {try {outputToClient、writeUTF(jtf、getText()、trim() + '\n'); //向服务器发送消息jta、append("发送的消息:" + jtf、getText()、trim() +'\n');jtf、setText(""); //输出后清空输入框} catch (IOException e1) {System、err、println(e1);}}}}2、客户端代码:package cn、MyNET;import java、awt、BorderLayout;import java、awt、Container;import java、awt、Font;import java、awt、event、ActionEvent;import java、awt、event、ActionListener;import java、io、DataInputStream;import java、io、DataOutputStream;import java、io、IOException;import java、net、Socket;import java、text、SimpleDateFormat;import java、util、Calendar;import javax、swing、JFrame;import javax、swing、JLabel;import javax、swing、JPanel;import javax、swing、JScrollPane;import javax、swing、JTextArea;import javax、swing、JTextField;public class Client extends JFrame {/****/private static final long serialVersionUID = 24810448L;//输入消息框private JTextField jtf = new JTextField();//显示区域private JTextArea jta = new JTextArea();//IO流private DataOutputStream toServer;private DataInputStream fromServer;public static void main(String[] args){new Client();}public Client(){JPanel p = new JPanel();p、setLayout(new BorderLayout()); //设置格式布局p、add(new JLabel("请输入您要发送的消息"), BorderLayout、WEST);p、add(jtf, BorderLayout、CENTER);jtf、setHorizontalAlignment(JTextField、RIGHT); //设置对齐方式setLayout(new BorderLayout());add(p, BorderLayout、NORTH);add(new JScrollPane(jta), BorderLayout、CENTER);jtf、addActionListener(new TextFieldListener()); //设置侦听器接口setTitle("客户端");setSize(500, 300);setDefaultCloseOperation(JFrame、EXIT_ON_CLOSE);setVisible(true); //使可视化组建可见try {jta、append("向服务器请求链接"+'\n');@SuppressWarnings("resource")Socket socket = new Socket("localhost", 8888);fromServer = new DataInputStream(socket、getInputStream());toServer = new DataOutputStream(socket、getOutputStream());jta、append("已连接到服务器,可以开始发送消息"+'\n');while(true){String fromStr = fromServer、readUTF();jta、append("服务端发来消息:" +fromStr);}} catch (IOException e) {jta、append("未连接到服务器" + '\n');}}private class TextFieldListener implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {try {//得到当前时间SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式String time = df、format(Calendar、getInstance()、getTime());//得到时间toServer、writeUTF(jtf、getText()、trim() + '\n'); //向服务器发送消息jta、append( time + "发送的消息:" + jtf、getText()、trim() +'\n'); jtf、setText(""); //输出后清空输入框} catch (IOException e1) {System、err、println(e1);}}}}。
本科实验报告课程名称:计算机网络基础姓名:计算机学院学院:软件工程系:专业:软件工程学号:陆魁军陈辉指导教师: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)互通。
中南大学
Socket通信实验
班 级 信息安全0901
学 生 王树雄
学 号 0909090128
教 师 王伟平
公共网络
络
【实验目的】
理解Socket的基本概念工作原理,掌握Socket的建立、监
听、连接、发送数据和接收数据。
【实验内容】
采用Java(c++或者c语言)语言编写网络上的点对点的
Socket程序。该程序必须能在服务器端实现监听连接请求,客
户端实现发送连接请求的功能,在建立连接后进行发送和接收数
据的功能。
【实验要求】
实验课时为4学时。要求完成在服务器端和客户端的源程序
的编写,并作出分析。
具体要求如下:
1、服务器端建立一个Socket,设置好本机的IP和监听的端
口与Socket进行绑定,开始监听连接请求,当接收到连接请求
后,发出确认,同客户端建立连接,开始与客户端进行通信。
2、客户端建立一个Socket,设置好服务器端的IP和提供服
务的端口,发出连接请求, 在收到服务器的确认后,建立连接,
开始与服务器端进行通信。
3、服务器端和客户端的连接及它们之间的数据传送均采用同
步方式。
【基本概念 】
网络上的两个程序通过一个双向的通信连接实现数据的交换,这
个双向连路的一端成为一个Socket。Socket通常用来实现客户
方和服务方的连接。它既可以接受请求,也可以发送请求,利用
它可以较为方便的编写网络上数据的传递。在Java等语言中,
有专门的Socket类来处理用户的请求和响应。利用Socket类的
方法,就可以实现两台计算机之间的通讯。
【演示界面】
主界面
注册界面
【总结感悟】
用到了java语言已经提供好的socket类进行调用,这在很
大程度上方便了我们的操作,遇上的问题是注册在文件里面
和登陆的时候从文件里面调取。还有多道线程方面的处理问
题。以及界面等方面的内容,当然,设计到的专业知识是tcp
方面的,也就是面向连接的,也可以用udp来进行通信。