一、概述
Java网络编程:数据在网络传输的过程中,需要用到网络编程,安全性较高的用TCP,要求速度快的用UDP。针对TCP的套接字编程,是一个重点。下面为一个示例:客户端传递一个字串到服务器,由服务器处理完返回大写字符。
二、程序
-
客户端
/**
* @Title: TCPClient.java
* @Package com.lut.day23
* @Description: TODO
* @author Licon
* @date 2018年8月31日
* @version V1.0
*/
package com.lut.wy.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
/**
* @ClassName: TCPClient
* @Description: TODO
* @author Licon
* @date 2018年8月31日
*
*/
public class TCPClient {
public static void main(String[] args) {
Socket socket = null;
Scanner sc = null;
PrintWriter pw = null;
BufferedReader br=null;
try {
//绑定服务器端口,便于发送数据
socket = new Socket("127.0.0.1",9999);
//输入流
sc = new Scanner(System.in);
String line = null;
//向socket对象中写内容,传递给服务器
pw = new PrintWriter(socket.getOutputStream());
//读取流,读取服务器返回回来的数据
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while((line=sc.nextLine()) != null){
if("over".equals(line)){
break;
}
pw.println(line);
pw.flush();
String readLine = br.readLine();
System.out.println(readLine);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(sc != null) {
sc.close();
}
if(br != null) {
br.close();
}
if(pw != null) {
pw.close();
}
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
- 服务器端
/**
* @Title: TCPServer.java
* @Package com.lut.wy.socket
* @Description: TODO
* @author Licon
* @date 2018年8月31日
* @version V1.0
*/
package com.lut.wy.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @ClassName: TCPServer
* @Description: TODO
* @author Licon
* @date 2018年8月31日
*
*/
public class TCPServer {
public static void main(String[] args) {
BufferedReader br = null;
ServerSocket ss = null;
Socket accept = null;
PrintWriter pw= null;
try {
ss= new ServerSocket(9999);
//设置循环,不断监听9999端口
while(true) {
//获取客户端发过来的socket对象
accept = ss.accept();
//创建读取流,读取accpet中的字节数据
br = new BufferedReader(new InputStreamReader(accept.getInputStream(),"GBK"));
//创建输出流,将处理后的数据返回客户端
pw = new PrintWriter(accept.getOutputStream());
String readLine = null;
//返回数据
while((readLine = br.readLine()) != null) {
System.out.println(readLine);
pw.println(tpUpperCase(readLine));
pw.flush();
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(br != null) {
br.close();
}
if(pw != null) {
pw.close();
}
if(ss != null) {
ss.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* @Title: tpUpperCase
* @Description: TODO 将小写转化为大写
* @param @param str
* @param @return
* @return String
* @throws
*/
public static String tpUpperCase(String str) {
return str.toUpperCase();
}
}