实验08Java之网络编程.docx

上传人:b****2 文档编号:12877088 上传时间:2023-04-22 格式:DOCX 页数:13 大小:23.79KB
下载 相关 举报
实验08Java之网络编程.docx_第1页
第1页 / 共13页
实验08Java之网络编程.docx_第2页
第2页 / 共13页
实验08Java之网络编程.docx_第3页
第3页 / 共13页
实验08Java之网络编程.docx_第4页
第4页 / 共13页
实验08Java之网络编程.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

实验08Java之网络编程.docx

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

实验08Java之网络编程.docx

实验08Java之网络编程

实验八网络编程

1.实验目的

(1)掌握Socket通信。

(2)掌握UDP通信

2.实验内容

实验题1利用Socket类和ServerSocket类编写一个C/S程序,实现C/S通信。

客户端向服务器端发送Time命令,服务器端接受到该字符串后将服务器端当前时间返回给客户端;客户端向服务器端发送Exit命令,服务器端向客户端返回“Bye”后退出。

packagecn.e;

importjava.io.BufferedReader;

importjava.io.BufferedWriter;

importjava.io.DataInputStream;

importjava.io.IOException;

importjava.io.InputStreamReader;

importjava.io.OutputStreamWriter;

import.Socket;

import.UnknownHostException;

importjava.util.Scanner;

publicclassClient{

publicstaticvoidmain(String[]args){

Socketclient=null;

InputStreamReaderin=null;//将字节流变为字符流,有转换功能

OutputStreamWriterout=null;

try{

client=newSocket("localhost",4331);

}catch(UnknownHostExceptione2){

//TODOAuto-generatedcatchblock

e2.printStackTrace();

}catch(IOExceptione2){

//TODOAuto-generatedcatchblock

e2.printStackTrace();

}

try{

in=newInputStreamReader(client.getInputStream());

}catch(IOExceptione1){

//TODOAuto-generatedcatchblock

e1.printStackTrace();

}

try{

out=newOutputStreamWriter(client.getOutputStream());

}catch(IOExceptione1){

//TODOAuto-generatedcatchblock

e1.printStackTrace();

}

BufferedWriterbout=newBufferedWriter(out);

BufferedReaderbin=newBufferedReader(in);

while(true){//从客户端向服务器传输数据

System.out.println("请输入'Time'或者'Exit'");

Scannerreader=newScanner(System.in);

try{

bout.write(reader.next());

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

try{

bout.newLine();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

try{

bout.flush();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

Stringmassage=null;

try{

massage=bin.readLine();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

if(massage.equals("Bye")){

System.out.println("From server:

 "+massage);

break;

}

else

System.out.println("从服务器返回的时间:

"+massage);

}

try{

client.close();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

}

 

packagecn.e;

importjava.io.BufferedReader;

importjava.io.BufferedWriter;

importjava.io.DataOutputStream;

importjava.io.IOException;

importjava.io.InputStreamReader;

importjava.io.OutputStreamWriter;

import.ServerSocket;

import.Socket;

importjava.text.SimpleDateFormat;

importjava.util.Date;

publicclassServer{

publicstaticvoidmain(String[]args){

ServerSocketserver=null;

try{

server=newServerSocket(4331);

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

System.out.println("服务器启动完毕");

System.out.println("等待客户端连接...");

Socketyou=null;

try{

you=server.accept();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

InputStreamReaderin=null;

OutputStreamWriterout=null;

try{

in=newInputStreamReader(you.getInputStream());

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

try{

out=newOutputStreamWriter(you.getOutputStream());

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

BufferedWriterbout=newBufferedWriter(out);

BufferedReaderbin=newBufferedReader(in);

if(you.isConnected()){

System.out.println("客户端名称为"+you.getInetAddress().getHostAddress()

+"连接成功!

");

}

while(true){

Strings=null;

try{

s=bin.readLine();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

if(s.equals("Time")){

Datedate=newDate();

System.out.println("客户端请求当前时间");

SimpleDateFormatformat=newSimpleDateFormat(

"yyyy/MM/ddHH:

mm:

ss");

}elseif(s.equals("exit")){

try{

bout.write("bye!

!

");

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

try{

bout.newLine();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

try{

bout.flush();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

try{

you.close();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

}

}

[基本要求]编写完整程序。

实验题2编写一数据报通信程序,实现简单的聊天功能。

 

图3.9聊天程序界面

[基本要求]两人一组编写完整程序。

“聊天内容”和“输入文本”分别为当前聊天的历史信息和当前要传送出去的聊天文本。

“确定”、“清空”、“退出”三个按钮分别实现发送当前聊天文本、清空当前聊天文本和退出系统的功能。

packagecn.e;

importjava.awt.*;

importjava.awt.event.*;

importjava.io.IOException;

import.*;

importjavax.swing.*;

publicclassUDPmessageextendsJFrameimplementsActionListener{

privateJTextAreatext;

privateJTextFieldipText;

privateJTextFieldsendText;

privateJButtonbutton1;

privateJButtonbutton2;

privateJButtonbutton3;

privateDatagramSocketsocket;

privateJScrollBarvsBar;

publicUDPmessage(){

setTitle("UDP聊天程序");

setBounds(100,100,400,300);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLayout(newBorderLayout());

text=newJTextArea();

text.setEditable(false);

JScrollPanetextPanel=newJScrollPane(text);

vsBar=textPanel.getVerticalScrollBar();

add(textPanel,BorderLayout.CENTER);

JPanelpanel=newJPanel();//一定要有的

BorderLayoutpanelLayout=newBorderLayout();

panelLayout.setHgap(5);

panel.setLayout(panelLayout);

ipText=newJTextField("192.168.1.103");

panel.add(ipText,BorderLayout.WEST);

sendText=newJTextField();

panel.add(sendText,BorderLayout.CENTER);

button1=newJButton("确定");

//button2=newJButton("清空");

//button3=newJButton("退出");

panel.add(button1,BorderLayout.EAST);

add(panel,BorderLayout.SOUTH);

setVisible(true);

server();

button1.addActionListener(this);}

privatevoidserver(){

try{

socket=newDatagramSocket(9527);

}catch(SocketExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}//实例化数据报套接字

byte[]buf=newbyte[1024];

finalDatagramPacketdpl=newDatagramPacket(buf,buf.length);//创建接收数据的数据包 

Runnablerunnable=newRunnable(){

publicvoidrun(){

while(true){

try{

Thread.sleep(100);

}catch(InterruptedExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

try{

socket.receive(dpl);

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

intlength=dpl.getLength();

Stringmessage=newString(dpl.getData(),0,length);//获取数据包的字符串信息 

Stringip=dpl.getAddress().getHostAddress();

try{

if(!

InetAddress.getLocalHost().getHostAddress().equals(ip));

}catch(UnknownHostExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

text.append(ip+":

\n   "+message+"\n");

vsBar.setValue(vsBar.getMaximum());//控制信息滚动

}

}

};

}

publicvoidactionPerformed(ActionEventev){

Stringip=ipText.getText();//获取IP文本框内容

InetAddressaddress=null;

try{

address=InetAddress.getByName(ip);

}catch(UnknownHostExceptione2){

//TODOAuto-generatedcatchblock

e2.printStackTrace();

}

byte[]data=sendText.getText().getBytes();//获取发送的数据

DatagramPacketdp=newDatagramPacket(data,data.length,address,9527);//定义数据包

Stringmyip=null;

try{

myip=InetAddress.getLocalHost().getHostAddress();

}catch(UnknownHostExceptione1){

//TODOAuto-generatedcatchblock

e1.printStackTrace();

}//获取本机IP  

//将发送信息添加到信息接收文本域中 

text.append(myip+":

\n   "+sendText.getText()+":

\n");

try{

socket.send(dp);

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}//发送数据包

sendText.setText(null);

}

publicstaticvoidmain(Stringargs[]){

//JFrameframe=newUDPmessage();

UDPmessageudp=newUDPmessage();

udp.setVisible(true);

}

}

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

当前位置:首页 > IT计算机

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

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