Java implements TCP (socket) network programming:
In Java, you can directly use Socket to instantiate a socket object to implement the tcp protocol. The client and server can establish a connection in the local area network through the IP address and port, and transfer data and files.
data transmission:
@Test
public void client ( ) {
Socket socket = null;
OutputStream os = null;
try {
InetAddress inet = InetAddress. getByName ( "127.0.0.1" ) ;
socket = new Socket ( inet, 8899 ) ;
os = socket. getOutputStream ( ) ;
os. write ( "你好,我是客户端" . getBytes ( ) ) ;
} catch ( IOException e) {
e. printStackTrace ( ) ;
} finally {
if ( os != null) {
try {
os. close ( ) ;
} catch ( IOException e) {
e. printStackTrace ( ) ;
}
}
if ( socket != null) {
try {
socket. close ( ) ;
} catch ( IOException e) {
e. printStackTrace ( ) ;
}
}
}
}
@Test
public void server ( ) {
ServerSocket ss = null;
Socket socket = null;
InputStream is = null;
ByteArrayOutputStream baos = null;
try {
ss = new ServerSocket ( 8899 ) ;
socket = ss. accept ( ) ;
is = socket. getInputStream ( ) ;
baos = new ByteArrayOutputStream ( ) ;
byte[ ] buffer = new byte[ 5 ] ;
int len;
while ( ( len = is. read ( buffer) ) != - 1 ) {
baos. write ( buffer, 0 , len) ;
}
System. out. println ( baos. toString ( ) ) ;
System. out. println ( "收到了来自于:" + socket. getInetAddress ( ) . getHostAddress ( ) + "的数据" ) ;
} catch ( IOException e) {
e. printStackTrace ( ) ;
} finally {
if ( baos != null) {
try {
baos. close ( ) ;
} catch ( IOException e) {
e. printStackTrace ( ) ;
}
}
if ( is != null) {
try {
is. close ( ) ;
} catch ( IOException e) {
e. printStackTrace ( ) ;
}
}
if ( socket != null) {
try {
socket. close ( ) ;
} catch ( IOException e) {
e. printStackTrace ( ) ;
}
}
if ( ss != null) {
try {
ss. close ( ) ;
} catch ( IOException e) {
e. printStackTrace ( ) ;
}
}
}
}
file transfer:
@Test
public void client ( ) throws IOException {
Socket socket = new Socket ( InetAddress. getByName ( "127.0.0.1" ) , 9090 ) ;
OutputStream os = socket. getOutputStream ( ) ;
FileInputStream fis = new FileInputStream ( new File ( "beauty.jpg" ) ) ;
byte[ ] buffer = new byte[ 1024 ] ;
int len;
while ( ( len = fis. read ( buffer) ) != - 1 ) {
os. write ( buffer, 0 , len) ;
}
socket. shutdownOutput ( ) ;
InputStream is = socket. getInputStream ( ) ;
ByteArrayOutputStream baos = new ByteArrayOutputStream ( ) ;
byte[ ] bufferr = new byte[ 20 ] ;
int len1;
while ( ( len1 = is. read ( buffer) ) != - 1 ) {
baos. write ( buffer, 0 , len1) ;
}
System. out. println ( baos. toString ( ) ) ;
fis. close ( ) ;
os. close ( ) ;
socket. close ( ) ;
baos. close ( ) ;
}
@Test
public void server ( ) throws IOException {
ServerSocket ss = new ServerSocket ( 9090 ) ;
Socket socket = ss. accept ( ) ;
InputStream is = socket. getInputStream ( ) ;
FileOutputStream fos = new FileOutputStream ( new File ( "beauty2.jpg" ) ) ;
byte[ ] buffer = new byte[ 1024 ] ;
int len;
while ( ( len = is. read ( buffer) ) != - 1 ) {
fos. write ( buffer, 0 , len) ;
}
System. out. println ( "图片传输完成" ) ;
OutputStream os = socket. getOutputStream ( ) ;
os. write ( "你好,照片我已收到!" . getBytes ( ) ) ;
fos. close ( ) ;
is. close ( ) ;
socket. close ( ) ;
ss. close ( ) ;
os. close ( ) ;
}