service
package no;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
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.io.RandomAccessFile;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
public class Server {
public static void main(String[] args) {
try {
ServerSocket mServerSocket = new ServerSocket(30012);
System.out.println("~~~服务端已就绪,等待客户端接入~,服务端ip地址: " + get_ip());
Socket socket;
socket = mServerSocket.accept();
new Thread(new Runnable() {
@Override
public void run() {
try {
InputStream is=null;
InputStreamReader isr=null;
BufferedReader br=null;
is = socket.getInputStream();
isr = new InputStreamReader(is,"UTF-8");
br = new BufferedReader(isr);
String info = null;
while((info=br.readLine())!=null)
{
System.out.println("客户端发送过来的信息:" + info);
if(info.equals("bye"))
{
break;
}
}
socket.shutdownInput();
} catch (Exception e) {
System.out.println(e.toString());
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
OutputStream out = socket.getOutputStream();
OutputStreamWriter outw = new OutputStreamWriter(out,"utf-8");
BufferedWriter br = new BufferedWriter(outw);
PrintWriter pw = new PrintWriter(br,true);
while(true)
{
System.out.print("请输入向客户端要发的东西:");
String str = bufferedReader.readLine();
pw.println(str);
if(str.equals("bye"))
{
break;
}
}
socket.shutdownOutput();
} catch (Exception e) {
}
}
}).start();
} catch (IOException e) {
e.printStackTrace();
}
}
public static String get_ip() throws UnknownHostException {
InetAddress address = InetAddress.getLocalHost();
return address.getHostAddress();
}
public static void Receive_file_client(Socket socket) {
new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println("开始接受");
InputStream is = socket.getInputStream();
File file = new File("D:\\3\\1.pdf");
if(!file.exists()) file.createNewFile();
RandomAccessFile fileoutstream = new RandomAccessFile(file, "rwd");
fileoutstream.seek(0);
byte[] buffer = new byte[1024];
int len = -1;
int length = 0;
while((len=is.read(buffer))!=-1)
{
fileoutstream.write(buffer,0,len);
length+=len;
}
fileoutstream.close();
is.close();
socket.close();
} catch (Exception e) {
System.out.println(e.toString());
}
}
}).start();
}
}
客户端
package no;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.text.WrappedPlainView;
public class ClientSocket {
public static void main(String[] args) throws IOException{
Socket socket = new Socket("192.168.43.51", 30012);
new Thread(new Runnable() {
@Override
public void run() {
try {
InputStream is=null;
InputStreamReader isr=null;
BufferedReader br=null;
is = socket.getInputStream();
isr = new InputStreamReader(is,"UTF-8");
br = new BufferedReader(isr);
String info = null;
while((info=br.readLine())!=null)
{
System.out.println("服务端发送过来的信息:" + info);
if(info.equals("bye"))
{
break;
}
}
socket.shutdownInput();
} catch (Exception e) {
System.out.println("run 接受"+e.toString());
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(socket.getOutputStream(),true);
while(true)
{
System.out.print("请输入向服务端要发的东西:");
String str = bufferedReader.readLine();
pw.println(str);
if(str.equals("bye"))
{
break;
}
}
socket.shutdownOutput();
} catch (Exception e) {
}
}
}).start();
}
}
service 多线程
package no;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
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.io.RandomAccessFile;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
public class Server {
public static void main(String[] args) {
try {
//1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口
ServerSocket mServerSocket = new ServerSocket(30012);
System.out.println("~~~服务端已就绪,等待客户端接入~,服务端ip地址: " + get_ip());
Socket socket;
//2.调用accept()等待客户端连接
socket = mServerSocket.accept();
//接受信息的线程
//Receive_file_client(socket);
new Thread(new Runnable() {
@Override
public void run() {
try {
InputStream is=null;
InputStreamReader isr=null;
BufferedReader br=null;
//字节输入流
is = socket.getInputStream();
//将字节流转为字符流
isr = new InputStreamReader(is,"UTF-8");
//为输入流添加缓冲
br = new BufferedReader(isr);
String info = null;
while((info=br.readLine())!=null)//循环读取客户端的信息
{
System.out.println("客户端发送过来的信息:" + info);
if(info.equals("bye"))
{
break;
}
}
socket.shutdownInput();
} catch (Exception e) {
System.out.println(e.toString());
}
}
}).start();
//发送信息的线程
new Thread(new Runnable() {
@Override
public void run() {
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
//字节流
OutputStream out = socket.getOutputStream();
//OutputStreamWriter()是从字符流到字节流的桥接 字节流->字符流
OutputStreamWriter outw = new OutputStreamWriter(out,"utf-8");
//字符添加缓冲缓冲输出流
BufferedWriter br = new BufferedWriter(outw);
PrintWriter pw = new PrintWriter(br,true);
while(true)
{
System.out.print("请输入向客户端要发的东西:");
String str = bufferedReader.readLine();
//给服务端发送消息
pw.println(str);
if(str.equals("bye"))
{
break;
}
}
socket.shutdownOutput();
} catch (Exception e) {
// TODO: handle exception
}
}
}).start();
} catch (IOException e) {
e.printStackTrace();
}
}
public static String get_ip() throws UnknownHostException {
InetAddress address = InetAddress.getLocalHost();
return address.getHostAddress(); //返回ip地址
}
public static void Receive_file_client(Socket socket) { //
new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println("开始接受");
InputStream is = socket.getInputStream();
File file = new File("D:\\3\\1.pdf");
if(!file.exists()) file.createNewFile();
RandomAccessFile fileoutstream = new RandomAccessFile(file, "rwd");
fileoutstream.seek(0);
byte[] buffer = new byte[1024];
int len = -1;
int length = 0;
while((len=is.read(buffer))!=-1)
{
fileoutstream.write(buffer,0,len);
length+=len;
}
fileoutstream.close();
is.close();
socket.close();
} catch (Exception e) {
System.out.println(e.toString());
}
}
}).start();
}
}
socket with Android
package no;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
public class Service_with_android {
public static void main(String[] args) {
try {
//1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口
ServerSocket mServerSocket = new ServerSocket(30011);
System.out.println("~~~服务端已就绪,等待客户端接入~,服务端ip地址: " + get_ip());
Socket socket;
//2.调用accept()等待客户端连接
while(true)
{
socket = mServerSocket.accept();
InputStream is=null;
InputStreamReader isr=null;
BufferedReader br=null;
is = socket.getInputStream(); //获取输入流
isr = new InputStreamReader(is,"UTF-8");
br = new BufferedReader(isr);
String info = null;
int flag = 1;
while((info=br.readLine())!=null)//循环读取客户端的信息
{
System.out.println("客户端发送过来的信息:" + info);
if(info.equals("bye"))
{
flag = 0;
}
}
if(flag==0) break;
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static String get_ip() throws UnknownHostException {
InetAddress address = InetAddress.getLocalHost();
return address.getHostAddress(); //返回ip地址
}
}