-
服务器端
查看全部 -
ServerScoket serviceScoket= new ServerScoket(8088); while(true){ Scoket scoket = serviceScoket.accept(); ScoketServerThread thread = new ScoketServerThread(scoket); thread.setPriority(4);//设置线程优先级 默认为5 thread.start(); }
查看全部 -
InetAddress address=packet.getAddress();
int port=packet.getPort();
byte[] data2="欢迎您!".getBytes();
//2.创建数据报,包含响应的数据信息
DatagramPacket packet2=new DatagramPacket(data2, data2.length, address, port);
//3.响应客户端
socket.send(packet2);
//4.关闭资源
socket.close();
查看全部 -
客户端
查看全部 -
服务器端
查看全部 -
Socket通信模型
查看全部 -
读取数据有很多种方法,各有各的特点
比如说字节流中,InputStream是最基本的,FileInputStream用来读取文件,DataInputStream适用于读取各种类型的数据,BufferedInputStream加缓冲可以提高IO性能
字符流中也有相应的类,InputStreamReader,FileReader,BufferedReader
其中BufferedReader有一个方法readLine(),可以一行一行读取,这个方法其他的都没有,使用起来比较方便
再看它的构造方法,需要传入Reader类型的参数,那么就必须再它前面new一个InputStreamReader,所以需要把字节流转换成字符流
如果不转换也可以,直接使用InputStream或者BufferedInputStream,一个字节一个字节读,或定义数组一些字节一些字节一起读,都可以,只不过没有一行一行读方便
查看全部 -
try...catch... 只是捕获自己想要的异常,并且可以避免程序的出错,throws只是抛出异常,然后出现异常就会程序报错,一般比如说你想要catch到一些比如说时间日期格式错误之类的,可以catch到信息中提示格式不正确,用throws就不会知道这个异常的具体内容,只会显示程序报错。
获取网页内容的方法:<br> 1.new InputStream创建一个输入流<br> 2.new InputStreamReader创建一个字节流<br> 3.new BufferedReader创建一个字符流将字节流转换为字符流 4.调用字符流的readLine(读取一行)方法获取网页内容,只要读取到的内容不为空,就一直读取。最后输出网页内容。
查看全部 -
网络通信
查看全部 -
Socket编程学习框架
查看全部 -
while(true) {
Thread thread=new Thread(new UDPServerThread(socket,data));
thread.start();
try {
thread.sleep(500);
//线程的run方法中无死循环,在main方法中开启线程//并放入死循环中,若不加sleep方法,则警告线程无法正确启动
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
[2.321s][warning][os,thread] Failed to start thread - _beginthreadex failed (EACCES) for attributes: stacksize: default, flags: CREATE_SUSPENDED STACK_SIZE_PARAM_IS.
Exception in thread "main" ????????????????????????
package com.one;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UDPServerThread implements Runnable{
private byte []data=null;
private DatagramSocket socket;
public UDPServerThread(DatagramSocket socket,byte []data) {
this.data=data;
this.socket=socket;
}
@Override
public void run() {
DatagramPacket packet=new DatagramPacket(data, 0, data.length);
try {
socket.receive(packet);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//4.打印输出客户端发送的数据
String s=new String(data, 0, packet.getLength());
System.out.println("我是服务器,客户端说:"+s);
/*
* 向客户端响应数据
*/
int port=packet.getPort();
InetAddress address=packet.getAddress();
byte []data2="欢迎你".getBytes();
DatagramPacket packet1=new DatagramPacket(data2, 0, data2.length, address, port);
try {
socket.send(packet1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
查看全部 -
应用多线程实现服务器与多客户端之间的通信
查看全部 -
Socket通讯模型
查看全部 -
客户端
查看全部 -
服务器端
查看全部
举报