按照老师的代码写在本地运行报错的问题

按照老师的代码写在本地运行报错的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
报错内容
15:39:54: Executing task 'UdpServer.main()'...
 
Executing tasks: [UdpServer.main()] in project F:\AndoridProject\Socket\Socket_https
 
 
FAILURE: Build failed with an exception.
 
* Where:
Initialization script 'C:\Users\31851\AppData\Local\Temp\UdpServer_main__.gradle' line: 20
 
* What went wrong:
A problem occurred configuring project ':app'.
> Could not create task ':app:UdpServer.main()'.
   > SourceSet with name 'main' not found.
 
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
 
* Get more help at https://help.gradle.org
 
Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.4.1/userguide/command_line_interface.html#sec:command_line_warnings
 
BUILD FAILED in 1s
15:39:57: Task execution finished 'UdpServer.main()'.

服务端代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package com.example.socket_https.udp;
 
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Scanner;
 
/**
 * @author 31851
 */
public class UdpServer {
    private InetAddress mInetAddres;
    private int mPort = 7777;
    private DatagramSocket mSocket;
    private Scanner mScanner;
 
    public UdpServer(){
        try {
            //获取本地地址
            mInetAddres = InetAddress.getLocalHost();
            mSocket = new DatagramSocket(mPort,mInetAddres);
 
            //System.out.println("服务端发消息:");
            mScanner = new Scanner(System.in);
            mScanner.useDelimiter("\n");
        catch (UnknownHostException | SocketException e) {
            e.printStackTrace();
        }
    }
 
    public void start(){
        while (true){
            byte[] buf = new byte[1024];
            try {
                //内容包
                DatagramPacket receivedPacket = new DatagramPacket(buf, buf.length);
                //receive会阻塞
                //从该DatagramSocket中接收数据报
                mSocket.receive(receivedPacket);
                //获取客户端的地址和端口
                InetAddress mAddress = receivedPacket.getAddress();
                int port = receivedPacket.getPort();
                //获取内容
                String clientMsg = new String(receivedPacket.getData(), 0, receivedPacket.getLength());
                System.out.println("客户端address:" + mAddress
                        " Port:" + port + " 客户端Message:" + clientMsg);
 
                //返回数据
                String returnedMsg = mScanner.nextLine();
                byte[] returnedMsgBytes = returnedMsg.getBytes();
                //封装返回的数据包
                DatagramPacket sentPacket = new DatagramPacket(returnedMsgBytes, returnedMsgBytes.length, receivedPacket.getSocketAddress());
                mSocket.send(sentPacket);
 
            catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
 
    public static void main(String[] args) {
        new UdpServer().start();
    }
 
}

客户端代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package com.example.socket_https.udp;
 
import android.net.InetAddresses;
 
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Scanner;
 
public class UdpClient {
    private String mServerIp = "192.168.1.4";
    private InetAddress mServerAddress;
    private int mServerPort = 7777;
    private DatagramSocket mSocket;
    private String clientMessage = "";
    private Scanner mScanner;
 
    public UdpClient(){
        try {
            mSocket = new DatagramSocket();
            mServerAddress = InetAddress.getByName(mServerIp);
 
            System.out.println("客户端发消息:");
            mScanner = new Scanner(System.in);
            mScanner.useDelimiter("\n");
        catch (SocketException | UnknownHostException e) {
            e.printStackTrace();
        }
    }
 
    public void start(){
        while (true){
            String returnedMsg = mScanner.nextLine();
            //将需要发送的String转为bytes
            byte[] returnedMsgBytes = returnedMsg.getBytes();
            try {
                DatagramPacket clientPacket = new DatagramPacket(returnedMsgBytes,
                        returnedMsgBytes.length, mServerAddress, mServerPort);
                //Sent数据
                mSocket.send(clientPacket);
 
                byte[] buf = new byte[1024];
                DatagramPacket mMsgPacket = new DatagramPacket(buf, buf.length);
                mSocket.receive(mMsgPacket);
                String clientMsg = new String(mMsgPacket.getData(), 0, mMsgPacket.getLength());
 
                System.out.println("服务端address:" + mSocket.getLocalSocketAddress()
                        " 服务端 Message:" + clientMsg);
 
            catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
 
    public static void main(String[] args) {
        new UdpClient().start();
    }
}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

只要,你的IP写的没错,老师亲测没有问题。应该是你环境的问题吧,你可以在main中只增加System.out.println("hello")这一行试试。或者就是运行的问题

http://img1.sycdn.imooc.com/climg/5e3bcb17095bcea404140209.jpg

要在main的左侧点这个运行按钮噢。祝:学习愉快

  • NickCharlie 提问者 #1
    是的,我确实是这么运行的。但是依然报错 16:36:05: Executing task 'UdpClient.main()'... Executing tasks: [UdpClient.main()] in project F:\AndoridProject\Socket\Socket_https FAILURE: Build failed with an exception. * Where: Initialization script 'C:\Users\31851\AppData\Local\Temp\UdpClient_main__.gradle' line: 20 * What went wrong: A problem occurred configuring project ':app'. > Could not create task ':app:UdpClient.main()'. > SourceSet with name 'main' not found. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/5.4.1/userguide/command_line_interface.html#sec:command_line_warnings BUILD FAILED in 0s 16:36:06: Task execution finished 'UdpClient.main()
    2020-02-06 16:36:32
  • NickCharlie 提问者 #2
    报错翻译 执行任务:项目F:\ AndoridProject \ Socket \ Socket_https中的[UdpClient.main()] 失败:生成失败,发生异常。 *其中: 初始化脚本'C:\ Users \ 31851 \ AppData \ Local \ Temp \ UdpClient_main __。gradle'行:20 * 什么地方出了错: 配置项目':app'时发生问题。 >无法创建任务':app:UdpClient.main()'。     >找不到名称为“ main”的SourceSet。 *尝试: 使用--stacktrace选项运行以获取堆栈跟踪。 使用--info或--debug选项运行,以获取更多日志输出。 与--scan一起运行以获取完整的见解。 *在https://help.gradle.org上获得更多帮助 此版本中使用了不推荐使用的Gradle功能,使其与Gradle 6.0不兼容。 使用“ --warning-mode all”来显示各个弃用警告。 参见https://docs.gradle.org/5.4.1/userguide/command_line_interface.html#sec:command_line_warnings 0秒内失败
    2020-02-06 16:37:47
  • NickCharlie 提问者 #3
    解决了,谢谢老师
    2020-02-06 17:25:31
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码