黑马程序员技术交流社区
标题:
同学们求助
[打印本页]
作者:
环球信息中心
时间:
2014-4-18 20:28
标题:
同学们求助
本帖最后由 环球信息中心 于 2014-4-21 15:41 编辑
向指定ip服务器发送一段数据, 接受的ip会根据数据的类型做出响应。。我这边在接受返回过来的数据..写入缓存,.,该怎么写?
作者:
sheng6699
时间:
2014-4-18 20:37
//建立通道
Socket sk = new Socket("指定IP",
端口号
);
//建立输出流
DataOutPutStream dos = new DataOutputStream(sk.getOutputStream());
//发送数据
dos.writeUTF("发数据过来!");
//建立输入流
DataInputStream dis = new DataInputStream(sk.getInputStream());
//判断通道没有关闭,并且连接着
if (!sk.isClosed() && sk.isConnected()) {
//读数据
String str=dis.readUTF();
System.out.println(str);
//关闭IO流
dis.close();
dos.close();
//关闭通道
sk.close();
}
作者:
xtxiaolu
时间:
2014-4-18 21:00
/**
* 1.发送
创建DatagramSocket, 随机端口号
创建DatagramPacket, 指定数据, 长度, 地址, 端口
使用DatagramSocket发送DatagramPacket
关闭DatagramSocket
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//String str = "三角恋爱,我喜欢美食,脂肪喜欢我";
DatagramSocket socket = new DatagramSocket(); //创建Socket对象
Scanner sc = new Scanner(System.in);
while(true) {
String line = sc.nextLine();
if(line.equals("quit")) {
break;
}
DatagramPacket packet = //创建packet对象将要发送的数据装在集装箱中
new DatagramPacket(line.getBytes(),line.getBytes().length, InetAddress.getByName("127.0.0.1"), 9999);
socket.send(packet); //将数据发送
}
socket.close();
sc.close();
}
发送端 键一个class吧这段代码粘贴进去
作者:
xtxiaolu
时间:
2014-4-18 21:01
/**
* 2.接收 创建DatagramSocket, 指定端口号 创建DatagramPacket, 指定数组, 长度
* 使用DatagramSocket接收DatagramPacket 关闭DatagramSocket 从DatagramPacket中获取数据
*
* @throws IOException
*/
public static void main(String[] args) throws IOException {
DatagramSocket socket = new DatagramSocket(9999); // 创建socket对象
DatagramPacket packet = new DatagramPacket(new byte[1024], 1024); // 创建packet对象,将接收的数据存储在字节数组中
while (true) {
socket.receive(packet); // 接收数据
int len = packet.getLength(); // 获取有效的字节个数
byte[] arr = packet.getData(); // 获取数据
String ip = packet.getAddress().getHostAddress();//获取ip地址
int port = packet.getPort(); //获取端口号
System.out.println(ip + ":" + port + ":" +new String(arr, 0, len)); // 将字节数据转换为字符串
}
}
接收端! 跟上面一样 要建一个class文件!
作者:
天涯追梦
时间:
2014-4-18 21:31
下面是我写的一个使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。
服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。。
看看能否解答你的疑问。
服务端程序
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
// 创建服务器Socket对象
ServerSocket ss = new ServerSocket(10000);
//接收客户端Socket
Socket s = ss.accept();
//获取Socket输入流,读取来自客服端的数据
InputStream in = s.getInputStream();
byte [] buf = new byte[1024];
int len = in.read(buf);
String str = new String (buf,0,len);
System.out.println("从客户端接收到的字符串为:"+str);
//创建Socket输出流,向客户端发送数据
OutputStream out = s.getOutputStream();
out.write(buf);
//关闭资源
s.close();
ss.close();
}
}
复制代码
客户端程序
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
//创建Socket客户端
Socket s = new Socket("127.0.0.1",10000);
//读取键盘输入的数据
System.out.println("请输入一个字符串:");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println("客服端输入的字符串为:"+str);
//获取Scocket输出流,写数据,即客户端向服务器写从键盘读到的数据
OutputStream out = s.getOutputStream();
out.write(str.getBytes());
//获取Scocket输入流,读取数据,即客户端读取来自服务器的数据
InputStream in = s.getInputStream();
byte [] buf = new byte[1024];
int len = in.read(buf);
String string = new String(buf,0,len);
//打印读取到的数据
System.out.println("客服端从服务器接收到的数据位:"+string);
//关闭Socket
s.close();
}
}
复制代码
作者:
环球信息中心
时间:
2014-4-21 15:40
xtxiaolu 发表于 2014-4-18 21:00
/**
* 1.发送
创建DatagramSocket, 随机端口号
嗯,谢谢你同行者。都加油
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2