TCP通讯协议的应用
创建服务器,可以多客户连接
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
try {
ServerSocket ss=new ServerSocket(10001);
while(true){
Socket s = ss.accept();
new Thread(new Runnable() {
@Override
public void run() {
Socket ThreadSocket = s;
String ip = ThreadSocket.getInetAddress().getHostAddress();
try {
System.out.println(ip+"已连接");
InputStream is = ThreadSocket.getInputStream();
byte b[]=new byte[1024];
int len=0;
while((len=is.read(b))!=-1){
System.out.println(new String(b,0,len));
}
ThreadSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
建立客户端的Socket服务
public static void main(String[] args) throws Exception, IOException {
Socket s = new Socket("172.16.1.100", 10001);
OutputStream os = s.getOutputStream();
OutputStream os = s.getOutputStream();
os.write("111".getBytes());
os.flush();
os.close();
s.close();
}
建立客户端的Socket服务,发送文件
public static void main(String[] args) throws Exception, IOException {
Socket s = new Socket("172.16.1.139", 10000);
OutputStream os = s.getOutputStream();
File f=new File("D://test/shz.txt");
FileInputStream fis=new FileInputStream(f);
BufferedInputStream bis=new BufferedInputStream(fis);
byte[]b=new byte[1024];
int len=0;
while((len=bis.read(b))!=-1){
os.write(b,0,len);
}
os.flush();
os.close();
s.close();
}
创建服务器一直保持开启状态,可多人连接,将接收到的数据保存至指定文件中
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
try {
ServerSocket ss=new ServerSocket(10001);
while(true){
Socket s = ss.accept();
new Thread(new Runnable() {
@Override
public void run() {
Socket ThreadSocket = s;
String ip = ThreadSocket.getInetAddress().getHostAddress();
try {
System.out.println(ip+"已连接");
InputStream is = ThreadSocket.getInputStream();
byte b[]=new byte[1024];
int len=0;
File f=new File("D://test/test3",new SimpleDateFormat("HHmmss").format(new Date())+".txt");
f.createNewFile();
FileOutputStream fos=new FileOutputStream(f);
BufferedOutputStream bos=new BufferedOutputStream(fos);
while((len=is.read(b))!=-1){
bos.write(b,0,len);
}
bos.flush();
bos.close();
ThreadSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}