欢迎来到天天文库
浏览记录
ID:3706984
大小:353.43 KB
页数:11页
时间:2017-11-23
《计算机网络基于java的tcp服务器和客户端聊天程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、HUNANUNIVERSITY计算机网络实验报告题目实验三学生姓名学生学号专业班级物联一班指导老师谢鲲完成日期2013.12.15一、实验目的:1.搞清楚什么是端口;明白什么是套接字(socket);2.弄清楚网络通信在传输层传输数据的方式(两种:流传输(tcp)和数据报传输(udp)),明白三种套接字编程方法(流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW));3.熟悉C++MFC编程中的套接字编程;4.了解tcp各种连接状态和套接字编程中服务器端和客户端的编程步骤,以及各
2、个步骤的含义;5.尝试实现流式套接字的服务器和客户端程序;二、实验要求:1.根据实验要求,交一份标准的实验报告;2.了解端口、套接字和TCP的各种连接状态;3.理解通信过程中服务器端和客户端的通信过程;4.尝试编写基于流式套接字的服务器和客户端程序;三、实验内容1、TCP各种连接状态(TCP套接字状态意义)TCP套接字解释状态意义CLOSED 没有使用这个套接字LISTEN 套接字正在监听入境连接SYN_SENT 套接字正在试图主动建立连接SYN_RECEIVED 正在处于连接的初始同步状态ESTABLISHED 连接已建立CLOS
3、E_WAIT 远程套接字已经关闭:正在等待关闭这个套接字FIN_WAIT_1 套接字已关闭,正在关闭连接CLOSING 套接字已关闭,远程套接字正在关闭,暂时挂起关闭确认LAST_ACK 远程套接字已,正在等待本地套接字的关闭确认FIN_WAIT_2 套接字已关闭,正在等待远程套接字关闭TIME_WAIT 这个套接字已经关闭,正在等待远程套接字的关闭传送1、Socket通信过程中服务器端和客户端的通信过程Socket是网络驱动层提供给应用程序编程的接口和一种数据发送、接收机制。Socket由应用程序创建,与网络驱动层建立绑定机制,告
4、诉网络驱动层当前应用程序所对应的IP地址和端口号。Socket数据发送过程:Socket数据接收过程:1、基于Java的Tcp服务器和客户端聊天程序服务器端:***************************************************packagemyserver;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.*;importjava.net.ServerSocket;importjava
5、.net.Socket;importjava.util.logging.Level;importjava.util.logging.Logger;importjavax.swing.*;publicclassMyServerextendsJFrameimplementsActionListener,Runnable{JTextAreajTextReceive=newJTextArea();JTextFieldjTextSend=newJTextField();JButtonjbs=newJButton("发送");ServerSoc
6、ketserver=null;JScrollPanejsp=newJScrollPane(jTextReceive);SocketclientSocket;//负责当前线程中C/S通信中的Socket对象booleanflag=true;//标记是否结束ThreadconnenThread;//向客户端发送信息的线程BufferedReadersin;//输入流对象DataInputStreamsin1;DataOutputStreamsout;//输出流对象booleanflags=false;publicstaticvoidma
7、in(String[]args){MyServerMS=newMyServer();MS.serverStart();}publicsynchronizedvoidchangeFlag(booleant){flags=t;}publicvoidserverStart(){try{server=newServerSocket(8080);//建立监听服务this.setTitle("服务器端,端口号:"+server.getLocalPort());this.setLayout(null);this.setBounds(20,00,3
8、00,300);jsp.setBounds(20,20,220,100);jTextSend.setBounds(20,120,220,50);jbs.setBounds(20,170,220,30);this.add(jsp);th
此文档下载收益归作者所有