网络编程(Socket编程)
1.网络通信要素:
IP和端口号;
网络通信协议
//表示互联网协议 (IP) 地址
public static void main(String[] args) {
try {
InetAddress inetAddress = InetAddress.getByName("www.baidu.com");
//www.baidu.com/182.61.200.6
System.out.println(inetAddress);
//www.baidu.com
System.out.println(InetAddress.getHostName());
//182.61.200.6
System.out.println(InetAddress.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
//端口号16位(0~65535)
端口号和IP组合得出一个网络套接字Socket
@Test
public void client(){
Socket socket = null;
OutputStream outputStream = null;
try {
InetAddress inetAddress = InetAddress.getByName("127.0.0.1");
socket = new Socket(inetAddress,3388);
outputStream = socket.getOutputStream();
outputStream.write("我爱你中国".getBytes());
outputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(outputStream!= null){
outputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(socket != null){
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test
public void server(){
ServerSocket serverSocket = null;
Socket socket = null;
InputStream inputStream = null;
ByteArrayOutputStream byteArrayOutputStream = null;
try {
serverSocket = new ServerSocket(3388);
socket = serverSocket.accept();
inputStream = socket.getInputStream();
byteArrayOutputStream = new ByteArrayOutputStream();
byte[] bytes = new byte[5];
int len;
while ((len = inputStream.read(bytes)) != -1){
byteArrayOutputStream.write(bytes,0,len);
}
System.out.println(byteArrayOutputStream.toString());
} catch (IOException e) {
e.printStackTrace();
} finally {
if(byteArrayOutputStream != null){
try {
byteArrayOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(inputStream != null){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(serverSocket != null){
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Test
public void client() {
Socket socket = null;
OutputStream outputStream = null;
FileInputStream fileInputStream = null;
try {
socket = new Socket(InetAddress.getByName("127.0.0.1"), 8809);
outputStream = socket.getOutputStream();
fileInputStream = new FileInputStream(new File("Screenshot.png"));
byte[] bytes = new byte[1024];
int len;
while ((len = fileInputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileInputStream != null) {
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
} else if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
} else if (socket != null) {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Test
public void server() {
ServerSocket serverSocket = null;
Socket socket = null;
InputStream inputStream = null;
FileOutputStream fileOutputStream = null;
try {
serverSocket = new ServerSocket(8809);
socket = serverSocket.accept();
inputStream = socket.getInputStream();
fileOutputStream = new FileOutputStream(new File("shot.png"));
byte[] bytes = new byte[1024];
int len;
while ((len = inputStream.read(bytes)) != -1) {
fileOutputStream.write(bytes, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (serverSocket != null) {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}