简介 目录 评价 推荐
  • 慕侠2458206 2018-07-21
    socket基于tdp和udp下的编程有什么区别?

    主要是UDP没有连接状态、速度快,但数据容易丢失,TCP有连接状态、速度慢,但数据较安全,一般根据你对程序数据的安全性要求和传输速度权衡。举例如下图
    http://img2.mukewang.com/5b5705060001108403300208.jpg

    1回答·1891浏览
  • 慕粉1473922411 2018-06-27
    请问为什么客户端的数据传不到服务器,服务器的数据也传不到客户端,

    单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素。

    wtindpwyjuerbxkrhzusnuhtplibfkfasdxelgbegtnldcjksxciyshqbteicfibjaqtehkjjgqspnbrtsctva

    2回答·1501浏览
  • qq___750 2018-06-26
    调用图形界面
    2回答·1238浏览
  • yyz要学java 2018-06-22
    这个True判断的是哪里
    已采纳 慕尚A7 的回答

    这不是做判断的,这里表示的是一个死循环,服务端要一直等待客户端的请求!

    不知道你懂了没0.0

    4回答·1223浏览
  • 武HH 2017-08-25
    基于TCP的socket编程,输出流关闭会Socket也关闭??

    你后面加了一段文字怎么就到输入框了呢?

    oplhepsntdvjffvtkumllvkzmrpxtvvgeibqkurycnwemejlunyyukdilklzqbwxkpyuhhwoatrnppzkagtpvanjiydvfrfpeovviwlwcmrrzhdslghtmyyureilzppsanunicbsomslfofthxiauqbkunbkixqyaztfybmdx

    2回答·3951浏览
  • 逍遥4063248 2017-08-20
    为什么客户端输出内容中文会乱码呢?

    出现乱码肯定是编码的问题  设置下输出流的编码格式试试 

    2回答·1353浏览
  • 慕侠1852468 2017-06-01
    socket登录

    我想看socket即时通信,哪里有,,就是可以互相回复的那种。。就像进入一个网站会弹出一个聊天框,,向58那样,,可以多用户和聊

    2回答·1481浏览
  • qq_Maverick_23397773 2017-04-09
    我在用多线程实现多个udp客户端的问题
    2回答·1329浏览
  • 不看6324不混吃等死 2017-03-16
    能不给我图片和文件TCP传输的代码呢

    package java_socket;


    import java.io.BufferedReader;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    import java.io.OutputStream;

    import java.io.OutputStreamWriter;

    import java.io.PrintWriter;

    import java.net.Socket;

    import java.net.UnknownHostException;


    public class client {


    public static void main(String[] args)  {

    //1.创建服务器地址和端口号

    try {

    Socket client1 = new Socket("localhost",8888);

    OutputStream os1=client1.getOutputStream();

    PrintWriter pw1=new PrintWriter(os1);

    pw1.write("我是客户端2");

    pw1.flush();

    client1.shutdownOutput();

    InputStream is1=client1.getInputStream();

    InputStreamReader isr=new InputStreamReader(is1);

    BufferedReader br=new BufferedReader(isr);

    String gain=null;

    while((gain=br.readLine())!=null){

    System.out.println("我是客户端,我从服务器接收的数据"+gain);

    }

    client1.shutdownInput();

    br.close();

    isr.close();

    is1.close();

    pw1.close();

    os1.close();

    client1.close();

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }


    }

    package java_socket;


    import java.io.BufferedInputStream;

    import java.io.BufferedReader;

    import java.io.FileInputStream;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    import java.io.OutputStream;

    import java.io.PrintWriter;

    import java.net.InetAddress;

    import java.net.ServerSocket;

    import java.net.Socket;


    public class server {


    public static void main(String[] args) {

    try {

    //1.创建socket对象

    ServerSocket  serversocket=new ServerSocket(8888);

    //2.调用accept()方法,等待客户端的连接

    System.out.println("服务器即将启动");

    // 计数器记录有几个客户端进行连接

    int count=0;

    Socket socket=null;

    while(true){

    socket=serversocket.accept();

    // 启动一个线程

    socketThread st1=new socketThread(socket);

    st1.start();

    count++;

    System.out.println("我是服务器,客户端连接 数量为"+count);

    InetAddress ia=socket.getInetAddress();

    System.out.println("当前客户端的IP为"+ia.getHostAddress());

    }

    //3.获取输入流进行信息交互

    // InputStream is1=socket.getInputStream();

    // InputStreamReader isr1=new InputStreamReader(is1);

    // BufferedReader bis1=new BufferedReader(isr1);

    // String info =null;

    // while((info=bis1.readLine())!=null){

    // System.out.println("我是服务器,客户端说   "+info);

    //

    //

    // }

    // socket.shutdownInput();

    // OutputStream os1=socket.getOutputStream();

    // PrintWriter pw1=new PrintWriter(os1);

    // pw1.write("我是服务器,我说登录成功");

    // pw1.flush();

    // socket.shutdownOutput();

    // pw1.close();

    // os1.close();

    // bis1.close();

    // isr1.close();

    // is1.close();

    // socket.close();

    // serversocket.close();

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }


    }


    }


    1回答·921浏览
  • 不看6324不混吃等死 2017-03-12
    对于同一个socket,直接关闭socket即可

    看实际应用需求。

    1回答·797浏览
  • Eula_dz 2016-11-12
    怎么传输文件啊 ConfigManager 什么的 不行啊

    import java.io.BufferedReader;

    import java.io.FileInputStream;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.io.PrintWriter;


    public class BrAndBwOrPwDemo {

    public static void main(String[] args) throws IOException{

    //对文件进行读写操作 

    BufferedReader br = new BufferedReader(

    new InputStreamReader(

    new FileInputStream("e:\\javaio\\imooc.txt")));

    /*BufferedWriter bw = new BufferedWriter(

    new OutputStreamWriter(

    new FileOutputStream("e:\\javaio\\imooc3.txt")));*/

    PrintWriter pw = new PrintWriter("e:\\javaio\\imooc4.txt");

    //PrintWriter pw1 = new PrintWriter(outputStream,boolean autoFlush);

    String line ;

    while((line = br.readLine())!=null){

    System.out.println(line);//一次读一行,并不能识别换行

    /*bw.write(line);

    //单独写出换行操作

    bw.newLine();//换行操作

    bw.flush();*/

    pw.println(line);

    pw.flush();

    }

    br.close();

    //bw.close();

    pw.close();

    }


    }

    利用文件读写方式将其读取后包装到数据报或直接通过TCP进行数据传递

    1回答·1615浏览
  • Eula_dz 2016-11-11
    java.io.StreamCorruptedException 怎么解决?

    有些小错误 找到了   序列化对象    还要实现  Serializable接口

    1回答·1718浏览
  • 小波66 2016-10-04
    UDP实现多线程

    package UDPTest;


    import java.io.IOException;

    import java.net.DatagramPacket;

    import java.net.DatagramSocket;

    import java.net.InetAddress;


    /**

     * 服务器端,实现基于UDP的用户登录

     * 

     * @author admin

     * 

     */

    public class UDPService {

    public static void main(String[] args) throws IOException {


    /*

    * 接受客户端发送的数据

    */

    // 创建服务器端DatagramSocket,并指定端口

    DatagramSocket socket = new DatagramSocket(8800);

    System.out.println("---服务器即将启动,等待客户端连接---");

    // 创建数据报,用于接受客户端发送的数据

    // 创建字节数组,用于指定接受的数据包的大小

    int count = 0;

    while (true) {

    byte[] data = new byte[1024];

    DatagramPacket packet = new DatagramPacket(data, data.length);

    // 接受客户端发送的数据,此方法在接受数据报之前会一直堵塞

    socket.receive(packet);

    // 创建一个多线程

    UDPThread thread = new UDPThread(packet, socket);

    // 线程开始

    thread.start();

    count++;

    System.out.println("当前客户端的数量为:" + count);

    // 查看连接的客户端的地址

    System.out.println("当前客户端的地址为:" + packet.getAddress());

    }

    }

    }


    2回答·1409浏览
  • qq_versatilewin_03747674 2016-08-09
    如何实现java客户端循环接收服务器信息呢

    while(true){

    }

    1回答·4936浏览
  • 陈婉 2016-07-30
    新手求教!使用序列化做的时候,我的服务器端抛出了空指针异常,该怎么修改呢?
    已采纳 qq_海贼_0 的回答

    你的代码写错了,服务器端socket是由serverSocket.accept();来初始化,这样获取客户端传来的数据,除此之外你的User类还需要实现序列化接口,implements Serializable,最好把set/get方法补上,JavaBean的习惯养好,另外如果报端口号占用的异常,你就把端口号改一下,因为你按老师步骤实践可能8888端口之前已经用过了。

    //1、创建一个服务器端Socket,即serverSocket,指定绑定的端口
    		ServerSocket serverSocket=new ServerSocket(8801);
    		//2、调用accept方法开始监听,等待客户端的连接
    		System.out.println("***服务器即将启动,等待客户端的连接****");
    		Socket socket=serverSocket.accept();
    		//3、获取输入流,并读取客户端信息
    		InputStream is=socket.getInputStream();//字节输入流
    		//反序列化
    		ObjectInputStream ois=new ObjectInputStream(is);
    		User user=(User)ois.readObject();
    		System.out.println("我是服务器,客户端说:"+user.toString());


    2回答·1501浏览
  • oneamongthosestars 2016-07-29
    为什么是降低优先级

    首先cpu的资源有限,所谓的异步是快速的执行不同的任务,并且在之间进行切换,例如一个请求执行到某个阶段,再去执行另外一个,然后在切换回来继续执行。

    每一次的切换都是根据一个算法来选择下一个执行的任务到底是哪一个,其中影响算法选择的非常重要的参数就是任务的优先级,优先级高的任务执行的概率就高,反之优先级地的任务执行的概率就低。

    如果并发量非常的高的话,这种时间差就会非常的明显,所以要区分任务的优先级,让高优先级的任务先执行,次要的任务后执行。

    关键是少年别光注意 降低优先级这几个字 , 是降低其他任务的优先级,来提高自己任务的速度,我白说这么多,你肯定是钻文字的牛角尖了,其中的内涵你懂得

    2回答·1018浏览
  • 慕粉Coder 2016-06-29
    socket传送文件,不能正常运行,自己又找不到问题,急求解

    感觉你的好复杂,只是我的http://www.imooc.com/article/11793

    还有你这部分我看不太懂,请将以下,/#是干什么用的

    OutputStream os=socket.getOutputStream();

            PrintWriter pw=new PrintWriter(os);

            pw.write("111/#"+filename+"/#"+filesize);

            pw.flush();  

            socket.shutdownOutput();


    2回答·1832浏览
  • Jlicky 2016-06-04
    socket可否用于GPRS通信中?

    如果GPRS使用的协议是Tcp那肯定是可以的

    1回答·1426浏览
  • 微笑听雨 2016-03-17
    socket 和 外网通信 的问题

    Socket通信  只能是在内网,要想在外网也进行通信的话  可以利用第三方软件 花生壳将服务器的内网IP映射到外网上

    1回答·2058浏览
  • PrivateStringName 2015-11-27
    为什么降低优先级,而不是提高优先级?

    设置高的优先级会出现与系统服务竞争资源的情况,也会导致运行速度变慢。

    2回答·1179浏览
  • BEMOVE 2015-10-08
    JAVA学习书籍推荐?
    4回答·677浏览
  • 五竹 2015-09-06
    【求助】UDP多线程
    UDPServer.java //服务端
    ========================================
    package UDP;
    
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    
    public class UDPServe {
    	public static void main(String[] args) {
    
    		try {
    			DatagramSocket socket = new DatagramSocket(9099);
    			System.out.println("Serve is waiting...");
    
    			byte[] data = null;
    
    			DatagramPacket packet = null;
    
    			while (true) {
    
    				data = new byte[1024];
    				packet = new DatagramPacket(data, data.length);
    
    				socket.receive(packet);
    
    				UDPServeThread thread = new UDPServeThread(socket, data, packet);
    				thread.start();
    			}
    			// socket.receive(packet);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    	}
    }
    
    UDPServerThread.java   //服务线程
    package UDP;
    
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    public class UDPServeThread extends Thread {
    
    	DatagramSocket socket = null;
    
    	byte[] data = null;
    
    	DatagramPacket packet = null;
    
    	public UDPServeThread(DatagramSocket socket, byte[] data,
    			DatagramPacket packet) {
    		this.data = data;
    		this.socket = socket;
    		this.packet = packet;
    	}
    
    	@Override
    	public void run() {
    
    		try {
    
    			System.out.println("Serve is waiting...3");
    			String info = new String(data, 0, packet.getLength());
    
    			System.out.println("Receive Client " + info);
    
    			// 响应数据
    			InetAddress address = packet.getAddress();
    			int port = packet.getPort();
    			byte[] dataReply = "welcome".getBytes();
    			DatagramPacket packetReply = new DatagramPacket(dataReply,
    					dataReply.length, address, port);
    			socket.send(packetReply);
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally{
    //			socket.close();
    		}
    
    		super.run();
    	}
    }


    7回答·2488浏览
  • 初生牛犊zjh 2015-08-24
    麻烦老师解释下
    已采纳 的回答
    2回答·1178浏览
  • sd1700092 2015-06-28
    服务器让它监听客户端的连接用accept()方法,那么客户端如何监听呢?
    3回答·3082浏览
  • 希尘 2015-05-21
    ocket传输中用到协议

    tcp、udp

    2回答·990浏览
  • 宝慕林3329632 2015-02-25
    byte[]长度怎么确定?

    通过byte[]数组的length属性

    1回答·1262浏览
  • 彪滚滚 2015-01-20
    关闭线程的问题
    已采纳 汤小洋 的回答

    从理论上来说,它们之间没有自动关闭操作的关联,但一般都是当socket关闭时,对应的线程也就该关闭,如案例中即是如此

    2回答·1122浏览
  • 血祭坛祭司 2015-01-08
    UDP异常处理
    已采纳 汤小洋 的回答

    UDP异常可以正常处理,例子中省略了

    1回答·1985浏览
  • 磨砂轮 2014-12-21
    关于使用while(true) 死循环

    accept()方法会阻塞程序。

    3回答·2702浏览
  • 远芳墨 2014-12-01

    此处以引入为主,主要讲解各技能点,后面的统合练习中会结合项目实战例子,可以参考下

    2回答·878浏览
数据加载中...
开始学习 免费