Main函数运行有错误
UdpServer.java
相关代码:
package com.example.imoocsample.udp;
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 UdpServer {
private InetAddress mInetAddress; //可以确定到指定的机器
private int mPort = 7777; //可以确定到具体的应用程序
private DatagramSocket mSocket;
private Scanner mScanner;
public UdpServer() {
try {
mInetAddress = InetAddress.getLocalHost();
mSocket = new DatagramSocket(mPort, mInetAddress);
mScanner = new Scanner(System.in);
mScanner.useDelimiter("\n");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (SocketException e) {
e.printStackTrace();
}
}
public void start() {
while(true) { //不让server端退出
try {
byte[] buf = new byte[1024]; //UDP每次通信过程中,数据包的大小是有限制的
DatagramPacket receivedPacket = new DatagramPacket(buf, buf.length);
//将接受到的数据存到receivedPacket里面(数据来自于客户端)
//而且receive方法是阻塞的,如果没有数据包到来的话,程序会一直阻塞在这个地方
mSocket.receive(receivedPacket);
InetAddress address = receivedPacket.getAddress(); //拿到客户端的地址
int port = receivedPacket.getPort(); //拿到客户端的端口号
//byte[] data = receivedPacket.getData(); //拿到客户端发的信息
String clientMsg = new String(receivedPacket.getData(), 0, receivedPacket.getLength());
System.out.println("address = " + address + " , port = " + port + " , msg = " + clientMsg);
//通过.next()来读取一个String(此方法也是阻塞的,需要主动输入内容并按回车键)
String returnedMsg = mScanner.next();
byte[] returnMsgBytes = returnedMsg.getBytes();
DatagramPacket sendPacket = new DatagramPacket(
returnMsgBytes,
returnMsgBytes.length,
receivedPacket.getSocketAddress() //也包含了地址的端口信息
);
mSocket.send(sendPacket);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new UdpServer().start();
}
}UdpClient.java
相关代码:
package com.example.imoocsample.udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.Scanner;
public class UdpClient {
private String mServerIp = "114.83.151.240";
private InetAddress mServerAddress;
private int mServerPort = 7777;
private DatagramSocket mSocket; //用来send和receive
private Scanner mScanner; //数据通过控制面板输入
public UdpClient() {
try {
mServerAddress = InetAddress.getByName("114.83.151.240"); //获取服务端的地址
mSocket = new DatagramSocket();
mScanner = new Scanner(System.in);
mScanner.useDelimiter("\n"); //让空白后面的内容也能输出
} catch (Exception e) {
e.printStackTrace();
}
}
public void start() {
while(true) { //让客户端一直跑着
try {
String clientMsg = mScanner.next();
byte[] clientMsgBytes = clientMsg.getBytes();
DatagramPacket clientPacket = new DatagramPacket(
clientMsgBytes, 0, clientMsgBytes.length,
mServerAddress,
mServerPort
);
mSocket.send(clientPacket);
byte[] buf = new byte[1024];
DatagramPacket serverMsgPacket = new DatagramPacket(buf, buf.length);
mSocket.receive(serverMsgPacket); //等着服务端返回数据过来
String serverMsg = new String(serverMsgPacket.getData(), 0, serverMsgPacket.getLength());
System.out.println("msg = " + serverMsg);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new UdpClient().start();
}
}先通过Run'UdpServer.main()' 运行时的报错:
相关代码:
18:17:15: Executing task 'UdpServer.main()'... Executing tasks: [UdpServer.main()] in project E:\AndroidStudioProjects > Configure project :av_loading_indicator_view_demo WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'. It will be removed in version 5.0 of the Android Gradle plugin. For more information, see http://d.android.com/r/tools/update-dependency-configurations.html. > Configure project :greendaodemo WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'. It will be removed in version 5.0 of the Android Gradle plugin. For more information, see http://d.android.com/r/tools/update-dependency-configurations.html. > Configure project :greendaopractice WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'. It will be removed in version 5.0 of the Android Gradle plugin. For more information, see http://d.android.com/r/tools/update-dependency-configurations.html. FAILURE: Build failed with an exception. * Where: Initialization script 'C:\Users\Administrator\AppData\Local\Temp\UdpServer_main__.gradle' line: 21 * What went wrong: A problem occurred configuring project ':imoocsample'. > Could not create task ':imoocsample: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 BUILD FAILED in 6s 18:17:23: Task execution finished 'UdpServer.main()'.
然后通过Run'UdpServer.main()' with Coverage, 服务端和客户端都能运行成功

但是客户端输入文本。按回车没有反应,服务端接收不到消息


我怀疑是我windows电脑里下载的android studio里的设置问题,然后我用Mac下载了一个android studio,也建立了一个服务端文件和客户端文件,启动时还是报错
正在回答 回答被采纳积分+1
FAILURE: Build failed with an exception. * Where: Initialization script 'C:\Users\Administrator\AppData\Local\Temp\UdpServer_main__.gradle' line: 21 * What went wrong: A problem occurred configuring project ':imoocsample'. > Could not create task ':imoocsample:UdpServer.main()'. > SourceSet with name 'main' not found.
sourceset设置有错误
- 参与学习 人
- 提交作业 116 份
- 解答问题 1012 个
本阶段是提升项目经验的必备,除Android开发的高级控件,还有Android官方大力推荐的开发语言Kotlin,未来Android发展的方向,最后使用Kotlin来开发热门电商项目。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星