基于TCPandUDP的socket编程.docx

上传人:b****5 文档编号:12154605 上传时间:2023-04-17 格式:DOCX 页数:8 大小:123.94KB
下载 相关 举报
基于TCPandUDP的socket编程.docx_第1页
第1页 / 共8页
基于TCPandUDP的socket编程.docx_第2页
第2页 / 共8页
基于TCPandUDP的socket编程.docx_第3页
第3页 / 共8页
基于TCPandUDP的socket编程.docx_第4页
第4页 / 共8页
基于TCPandUDP的socket编程.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

基于TCPandUDP的socket编程.docx

《基于TCPandUDP的socket编程.docx》由会员分享,可在线阅读,更多相关《基于TCPandUDP的socket编程.docx(8页珍藏版)》请在冰豆网上搜索。

基于TCPandUDP的socket编程.docx

基于TCPandUDP的socket编程

基于TCP-and-UDP的socket编程

天津理工大学实验报告

学院(系)名称:

计算机与通信工程学院

姓名

刘强

学号

20126***

专业

计算机科学与技术(中加)

班级

教学2班

实验项目

基于TCPandUDP的socket编程

课程名称

计算机网络

课程代码

0662016

实验时间

2015年4月30日第7、8节

实验地点

7-215

批改意见

成绩

 

教师签字:

newInputStreamReader(System.in));//将流连接到标准输入

DataOutputStreamoutToServer=newDataOutputStream(//DataOutputStream包含在java.io.*包中

clientSocket.getOutputStream());

BufferedReaderinFromServer=//inFromServer连接套接字的输入流

newBufferedReader(newInputStreamReader(//BufferedReader包含在java.io.*包中

clientSocket.getInputStream()));

sentence=inFromUser.readLine();//将用户输入的一行读入到sentence中

outToServer.writeBytes(sentence+'\n');//outToServer程序的输出流

modifiedSentence=inFromServer.readLine();//当到达服务器时,他们进入modifiedSentence字符串中

System.out.println("FROMSERVER:

"+modifiedSentence);//将服务器返回来的

//modifiedSentence打印到监视器上

clientSocket.close();//关闭套接字,tcp连接也随之关闭

}

}

TCPServer:

packagetcpServer;

importjava.io.BufferedReader;

importjava.io.DataOutputStream;

importjava.io.InputStreamReader;

import.ServerSocket;

import.Socket;

classserver{

privatestaticServerSocketwelcomeSocket;

publicstaticvoidmain(Stringargv[])throwsException{

StringclientSentence;//声明字符串变量用于存储字符串输入和传送

StringcapitalizedSentence;//从从客户端得到

welcomeSocket=newServerSocket(8579);//创建welcomeSocket对象,在8579端口进行监听

while(true){

SocketconnectionSocket=welcomeSocket.accept();//获取从客户端传来的字符

BufferedReaderinfromClient=newBufferedReader(

newInputStreamReader(//BufferedReader包含在java.io.*包中

connectionSocket.getInputStream()));

DataOutputStreamoutToClient=//outToClient程序的输出流

newDataOutputStream(connectionSocket.getOutputStream());

clientSentence=infromClient.readLine();//把用户输入的送入clientSentence中

capitalizedSentence=clientSentence.toUpperCase()+'\n';//将发送行中的小写转换成大写

outToClient.writeBytes(capitalizedSentence);

}

}

}

执行结果:

UDPClient:

packageudpClient;

importjava.io.BufferedReader;

importjava.io.InputStreamReader;

import.DatagramPacket;

import.DatagramSocket;

import.InetAddress;

publicclassudpClient{

publicstaticvoidmain(Stringargs[])throwsException{

System.out.println("请输入要转换的字符串:

");

BufferedReaderinFromUser=newBufferedReader(newInputStreamReader(

System.in));//创建输入流,用于输入字符串

DatagramSocketclientSocket=newDatagramSocket();//创建一个DatagramSocket对象

InetAddressIPAddress=InetAddress.getByName("127.0.0.1");//创建一个InetAddress

byte[]sendData=newbyte[1024];//创建字节数组

byte[]receiveData=newbyte[1024];

Stringsentence=inFromUser.readLine();//读取输入的字符

sendData=sentence.getBytes();//将字符串转化为字节数组

DatagramPacketsendPacket=newDatagramPacket(sendData,//创建DatagramPacket对象,

//指定其发送地址和端口号

sendData.length,IPAddress,8876);

clientSocket.send(sendPacket);//调用socket对象的send()方法发送数据

DatagramPacketreceivePacket=newDatagramPacket(receiveData,

receiveData.length);//创建DatagramPacket对象,用于接收数据

clientSocket.receive(receivePacket);///调用socket对象的receive()方法接收数据

StringmodifiedSentence=newString(receivePacket.getData());

System.out.println("FROMSERVER:

"+modifiedSentence);

clientSocket.close();//关闭客户端socket连接

}

}

UDPServer:

packageudpServer;

import.DatagramPacket;

import.DatagramSocket;

import.InetAddress;

publicclassudpServer{

publicstaticvoidmain(Stringargs[])throwsException{

@SuppressWarnings("resource")

DatagramSocketserverSocket=newDatagramSocket(8876);//创建一个DatagramSocket

//对象,指定端口为8876

byte[]receiveData=newbyte[1024];//创建字节数组

byte[]sendData=newbyte[1024];

while(true){

DatagramPacketreceivePacket=newDatagramPacket(receiveData,receiveData.length);

//创建一个空DatagramPacket对象

serverSocket.receive(receivePacket);//使用receiver方法接手客户端所发送到数据,

//如果客户端没有发送数据,进程阻塞

Stringsentence=newString(receivePacket.getData());

InetAddressIPAddress=receivePacket.getAddress();//获取Client端IP地址

intport=receivePacket.getPort();//获取Client端端口号

StringcapitalizedSentence=sentence.toUpperCase();//将字符串转化成大写字母

sendData=capitalizedSentence.getBytes();

DatagramPacketsendPacket=newDatagramPacket(sendData,//创建DatagramPacket

//对象,

//指定其发送地址和端口号

sendData.length,IPAddress,port);

serverSocket.send(sendPacket);//调用socket对象的send()方法发送数据

}

}

}

执行结果:

实验体会:

(1)DatagramSockets:

数据包socket,一般传输方式为UDP

(2)StreamSockets:

流socket,一般传输方式为TCP

Java通过两个类DatagramSocket和DatagramPacket来支持但Datagramsocket(UDP)。

DatagramSocket不真正区分Server和Client,既可以用来写server,也可以写client。

但对于java中的Socket类和ServerSocket类就只能分别来写客户端和服务器端(同时支持TCP与UDP,更Socket(Stringhost,intport,booleanstream)构造方法中的stream即可)。

 

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

当前位置:首页 > 教学研究 > 教学案例设计

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

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