端口号范围:0~65535,建议选择1024以上
UDP:面向无连接,数据不安全,速度快,不区分客户端和服务器(有发送端和接收端)(发短信)
TCP:面向连接(三次握手),数据安全,速度略低,分为客户端和服务器(打电话)
1.UDP
package day26
;
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 Dk1UdpSend {
public static void main(String
[] args
) throws IOException
{
advanced();
}
public static void basic() throws SocketException
, UnknownHostException
, IOException
{
DatagramSocket socket
= new DatagramSocket();
String str
= "红鲤鱼绿鲤鱼与驴";
DatagramPacket packet
= new DatagramPacket(str
.getBytes(), str
.getBytes().length
,InetAddress
.getByName("127.0.0.1"),12345);
socket
.send(packet
);
socket
.close();
}
public static void advanced() throws SocketException
, UnknownHostException
, IOException
{
DatagramSocket socket
= new DatagramSocket();
Scanner sc
= new Scanner(System
.in
);
while (true) {
String str
= sc
.nextLine();
if ("quit".equals(str
)) {
break;
}
DatagramPacket packet
= new DatagramPacket(str
.getBytes(), str
.getBytes().length
,InetAddress
.getByName("127.0.0.1"),12345);
socket
.send(packet
);
}
socket
.close();
}
}
package day26
;
import java
.io
.IOException
;
import java
.net
.DatagramPacket
;
import java
.net
.DatagramSocket
;
import java
.net
.SocketException
;
public class Dk2UdpReceive {
public static void main(String
[] args
) throws IOException
{
advanced();
}
public static void basic() throws SocketException
, IOException
{
DatagramSocket socket
= new DatagramSocket(12345);
DatagramPacket packet
= new DatagramPacket(new byte[1024], 1024);
socket
.receive(packet
);
byte[] arr
= packet
.getData();
int len
= packet
.getLength();
System
.out
.println(new String(arr
,0,len
));
socket
.close();
}
public static void advanced() throws SocketException
, IOException
{
DatagramSocket socket
= new DatagramSocket(12345);
DatagramPacket packet
= new DatagramPacket(new byte[1024], 1024);
while (true) {
socket
.receive(packet
);
byte[] arr
= packet
.getData();
int len
= packet
.getLength();
String ip
= packet
.getAddress().getHostAddress();
int port
= packet
.getPort();
System
.out
.println(ip
+ ":"+ port
+ ":"+new String(arr
,0,len
));
}
}
}
package day26
;
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 Dk3UdpMoreThread {
public static void main(String
[] args
) throws InterruptedException
{
new UdpReceive().start();
Thread
.sleep(10);
new UdpSend().start();
}
}
class UdpReceive extends Thread{
public void run() {
try {
DatagramSocket socket
= new DatagramSocket(12345);
DatagramPacket packet
= new DatagramPacket(new byte[1024], 1024);
while (true) {
socket
.receive(packet
);
byte[] arr
= packet
.getData();
int len
= packet
.getLength();
String ip
= packet
.getAddress().getHostAddress();
int port
= packet
.getPort();
System
.out
.println(ip
+ ":"+ port
+ ":"+new String(arr
,0,len
));
}
} catch (IOException e
) {
e
.printStackTrace();
}
}
}
class UdpSend extends Thread{
public void run() {
try {
DatagramSocket socket
= new DatagramSocket();
Scanner sc
= new Scanner(System
.in
);
while (true) {
String str
= sc
.nextLine();
if ("quit".equals(str
)) {
break;
}
DatagramPacket packet
= new DatagramPacket(str
.getBytes(), str
.getBytes().length
,InetAddress
.getByName("127.0.0.1"),12345);
socket
.send(packet
);
}
socket
.close();
} catch (IOException e
) {
e
.printStackTrace();
}
}
}
你好
127.0.0.1:57978:你好
你好
127.0.0.1:57978:你好
明天好
127.0.0.1:57978:明天好
2.TCP
package day26
;
import java
.io
.BufferedReader
;
import java
.io
.IOException
;
import java
.io
.InputStream
;
import java
.io
.InputStreamReader
;
import java
.io
.OutputStream
;
import java
.io
.PrintStream
;
import java
.net
.ServerSocket
;
import java
.net
.Socket
;
public class Dk4TcpServer {
public static void main(String
[] args
) throws IOException
{
moreThread();
}
public static void basic() throws IOException
{
ServerSocket server
= new ServerSocket(9999);
Socket socket
= server
.accept();
InputStream is
= socket
.getInputStream();
OutputStream os
= socket
.getOutputStream();
os
.write("百度一下,你就知道".getBytes());
byte[] arr
= new byte[1024];
int len
= is
.read(arr
);
System
.out
.println(new String(arr
,0,len
));
socket
.close();
}
public static void advanced() throws IOException
{
ServerSocket server
= new ServerSocket(9999);
Socket socket
= server
.accept();
BufferedReader br
= new BufferedReader(new InputStreamReader(socket
.getInputStream()));
PrintStream ps
= new PrintStream(socket
.getOutputStream());
ps
.println("欢迎咨询");
System
.out
.println(br
.readLine());
}
public static void moreThread() throws IOException
{
final ServerSocket server
= new ServerSocket(9999);
while (true) {
Socket socket
= server
.accept();
new Thread() {
public void run() {
try {
BufferedReader br
= new BufferedReader(new InputStreamReader(socket
.getInputStream()));
PrintStream ps
= new PrintStream(socket
.getOutputStream());
ps
.println("欢迎咨询");
System
.out
.println(br
.readLine());
socket
.close();
} catch (IOException e
) {
e
.printStackTrace();
}
}
}.start();
}
}
}
package day26
;
import java
.io
.BufferedReader
;
import java
.io
.IOException
;
import java
.io
.InputStream
;
import java
.io
.InputStreamReader
;
import java
.io
.OutputStream
;
import java
.io
.PrintStream
;
import java
.net
.Socket
;
import java
.net
.UnknownHostException
;
public class Dk5TcpClient {
public static void main(String
[] args
) throws IOException
{
advanced();
}
public static void basic() throws UnknownHostException
, IOException
{
Socket socket
= new Socket("127.0.0.1",9999);
InputStream is
= socket
.getInputStream();
OutputStream os
= socket
.getOutputStream();
byte[] arr
= new byte[1024];
int len
= is
.read(arr
);
System
.out
.println(new String(arr
,0,len
));
os
.write("学习挖掘机哪家强".getBytes());
socket
.close();
}
public static void advanced() throws UnknownHostException
, IOException
{
Socket socket
= new Socket("127.0.0.1",9999);
BufferedReader br
= new BufferedReader(new InputStreamReader(socket
.getInputStream()));
PrintStream ps
= new PrintStream(socket
.getOutputStream());
System
.out
.println(br
.readLine());
ps
.println("学Java");
socket
.close();
}
}
package day26
;
import java
.io
.BufferedReader
;
import java
.io
.File
;
import java
.io
.FileInputStream
;
import java
.io
.InputStreamReader
;
import java
.io
.PrintStream
;
import java
.net
.Socket
;
import java
.util
.Scanner
;
public class Dk7UploadClient {
public static void main(String
[] args
) throws IOException
{
File file
= getFile();
Socket socket
= new Socket("127.0.0.1",12345);
BufferedReader br
= new BufferedReader(new InputStreamReader(socket
.getInputStream()));
PrintStream ps
= new PrintStream(socket
.getOutputStream());
ps
.println(file
.getName());
String result
= br
.readLine();
if ("存在".equals(result
)) {
System
.out
.println("您上传的文件已经存在");
socket
.close();
return;
}
FileInputStream fis
= new FileInputStream(file
);
byte[] arr
= new byte[8192];
int len
;
while((len
= fis
.read(arr
)) != -1) {
ps
.write(arr
,0,len
);
}
fis
.close();
socket
.close();
}
public static File
getFile() {
Scanner sc
= new Scanner(System
.in
);
System
.out
.println("请输入文件路径:");
while (true) {
String line
= sc
.nextLine();
File file
= new File(line
);
if (!file
.exists()) {
System
.out
.println("重输:");
}else if (file
.isDirectory()) {
System
.out
.println("重输:");
}else {
return file
;
}
}
}
}
package day26
;
import java
.io
.BufferedReader
;
import java
.io
.File
;
import java
.io
.FileOutputStream
;
import java
.io
.IOException
;
import java
.io
.InputStream
;
import java
.io
.InputStreamReader
;
import java
.io
.PrintStream
;
import java
.net
.ServerSocket
;
import java
.net
.Socket
;
public class Dk6UploadServer {
public static void main(String
[] args
) throws IOException
{
ServerSocket server
= new ServerSocket(12345);
System
.out
.println("服务器启动");
while (true) {
final Socket socket
= server
.accept();
new Thread() {
public void run() {
try {
InputStream is
= socket
.getInputStream();
BufferedReader br
= new BufferedReader(new InputStreamReader(is
));
PrintStream ps
= new PrintStream(socket
.getOutputStream());
String fileName
= br
.readLine();
File dir
= new File("Upload");
dir
.mkdir();
File file
= new File(dir
,fileName
);
if (file
.exists()) {
ps
.println("存在");
socket
.close();
return;
}else {
ps
.println("不存在");
}
FileOutputStream fos
= new FileOutputStream(file
);
byte[] arr
= new byte[8192];
int len
;
while((len
= is
.read(arr
)) != -1) {
fos
.write(arr
,0,len
);
}
fos
.close();
socket
.close();
} catch (IOException e
) {
e
.printStackTrace();
}
}
}.start();
}
}
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-18384.html