자바 네트워크 프로 그래 밍 -> 상용 모듈
9241 단어 자바네트워크 프로 그래 밍
import java.io.*;
import java.util.*;
import java.net.*;
/*
,
1、 ServerSocket,
2、accept() 。
3、 Socket getInputStream() 。
,
Socket getOutputStream() 。
4、 socket
*/
//
class MyServer
{
public static void main(String[] args) throws Exception
{
ServerSocket srv = new ServerSocket(8189);
Socket so = srv.accept();
InetAddress inet = so.getLocalAddress();
String ip = inet.getHostAddress();
System.out.println(ip + "..connected");
//
InputStream inStream = so.getInputStream();
//
OutputStream outStream = so.getOutputStream();
Scanner in = new Scanner(inStream);
PrintWriter out = new PrintWriter(outStream, true); //
// , , BYE
boolean done = false;
while (!done && in.hasNext())
{
String str = in.nextLine();
out.println(str.toUpperCase());
if (str.equals("BYE"))
{
done = true;
}
}
so.close();
}
}
//
/*
1、
2、
3、
*/
class MyClient
{
public static void main(String[] args) throws Exception
{
Socket so = new Socket("localhost",8190);
//
InputStream inStream = so.getInputStream();
//
OutputStream outStream = so.getOutputStream();
Scanner in = new Scanner(inStream);
PrintWriter out = new PrintWriter(outStream, true); //
//
Scanner keyIn = new Scanner(System.in);
while (keyIn.hasNext())
{
String str = keyIn.nextLine();
out.println(str);
System.out.println(in.nextLine());
}
so.close();
}
}
2. 상용 API
1. 소켓 류, 소켓
구조 방법: 모두 proctected
Socket(String host, int port)
스 트림 소켓 을 만 들 고 지정 한 호스트 의 지정 한 포트 번호 에 연결 합 니 다.
Socket(InetAddress address, int port)
스 트림 소켓 을 만 들 고 지정 한 IP 주소 의 지정 한 포트 번호 에 연결 합 니 다.
방법:
void connect(SocketAddress endpoint)
이 소켓 을 서버 에 연결 합 니 다.
InetAddress getInetAddress()
소켓 연결 주 소 를 되 돌려 줍 니 다.
InputStream getInputStream()
이 소켓 의 입력 흐름 을 되 돌려 줍 니 다.
InetAddress getLocalAddress()
소켓 바 인 딩 된 로 컬 주소 가 져 오기
int getPort()
이 소켓 에 연 결 된 원 격 포트 를 되 돌려 줍 니 다.
OutputStream getOutputStream()
이 소켓 의 출력 흐름 을 되 돌려 줍 니 다.
void setSoTimeout(int timeout)
지정 한 시간 초 과 를 가 진 SO 사용/사용 하지 않 기TIMEOUT, 밀리초 단위.
void shutdownInput()
이 소켓 의 입력 흐름 은 '흐름 의 끝' 에 있 습 니 다.
void shutdownOutput()
이 소켓 의 출력 흐름 을 사용 하지 않 습 니 다.
2. InetAddress 류 는 인터넷 프로 토 콜 (IP) 주 소 를 나타 낸다.
static InetAddress getByName(String host)
호스트 이름 을 지정 한 상태 에서 호스트 의 IP 주 소 를 확인 합 니 다.
static InetAddress[] getAllByName(String host)
호스트 이름 을 지정 한 경우 시스템 에 설 정 된 이름 서비스 에 따라 IP 주소 로 구 성 된 배열 을 되 돌려 줍 니 다.
String getHostAddress()
IP 주소 문자열 을 되 돌려 줍 니 다.
String getHostName()
이 IP 주소 의 호스트 이름 을 가 져 옵 니 다.
3. InetSocketdress 류 는 IP 소켓 주소 (IP 주소 + 포트 번호) 를 실현 합 니 다.
구조 방법:
InetSocketAddress(String hostname, int port)
호스트 이름과 포트 번호 에 따라 소켓 주 소 를 만 듭 니 다.
InetSocketAddress(InetAddress addr, int port)
IP 주소 와 포트 번호 에 따라 소켓 주 소 를 만 듭 니 다.
방법:
InetAddress getAddress()
InetAddress 가 져 오기.
String getHostName()
hostname 가 져 오기.
int getPort()
포트 번호 가 져 오기.
、 :
import java.io.*;
import java.net.*;
import java.util.Scanner;
/*
,
: ,
*/
//
class ServerThread implements Runnable
{
private Socket so;
ServerThread(Socket s) {
this.so = s;
}
public void run() {
try
{
InetAddress inet = so.getLocalAddress();
String ip = inet.getHostAddress();
System.out.println(ip + "..connected");
//
InputStream inStream = so.getInputStream();
//
OutputStream outStream = so.getOutputStream();
Scanner in = new Scanner(inStream);
PrintWriter out = new PrintWriter(outStream, true); //
// , , BYE
boolean done = false;
while (!done && in.hasNext())
{
String str = in.nextLine();
out.println(str.toUpperCase());
if (str.equals("BYE"))
{
done = true;
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
so.close();
}
catch (IOException ie)
{
ie.printStackTrace();
}
}
}
}
class MySuperServer
{
public static void main(String[] args) throws Exception
{
ServerSocket s = new ServerSocket(8190);
while(true)
{
Socket so = s.accept();
Runnable r = new ServerThread(so);
new Thread(r).start();
}
}
}
3. 다 중 스 레 드 마지막 그림
import java.io.*;
import java.net.*;
import static java.lang.Math.*;
/*
,
1、 ServerSocket
*/
//
class PicThread implements Runnable
{
private Socket so;
PicThread(Socket s) {
this.so = s;
}
public void run() {
try
{
// IP
InetAddress inet = so.getInetAddress();
String ip = inet.getHostAddress();
System.out.println(ip + "..connected...");
//
InputStream in = so.getInputStream();
OutputStream out = so.getOutputStream();
File picFile = new File(ip + "(" + (int)(random()*100) + ").jpg");
FileOutputStream fos = new FileOutputStream(picFile);
//
byte[] buf = new byte[1024];
int len = 0;
while ((len = in.read(buf)) != -1)
{
fos.write(buf, 0, len);
}
//
out.write(" ".getBytes());
so.close();
fos.close();
}
catch (Exception e)
{
new RuntimeException(" !");
}
}
}
//
class UploadPicServer
{
public static void main(String[] args) throws Exception
{
ServerSocket s = new ServerSocket(8999);
while (true)
{
Socket so = s.accept();
Runnable r = new PicThread(so);
new Thread(r).start();
}
}
}
/*
*/
class UploadPicClient
{
public static void main(String[] args) throws Exception
{
Socket so = new Socket("127.0.0.1",8999);
//
InputStream inStream = so.getInputStream();
//
OutputStream outStream = so.getOutputStream();
//
File picFile = new File(args[0]);
FileInputStream fileIn = new FileInputStream(picFile);
byte[] bufout = new byte[1024];
int len = 0;
while ((len = fileIn.read(bufout)) != -1)
{
outStream.write(bufout, 0, len);
}
so.shutdownOutput();
//
byte[] bufIn = new byte[1024];
int num = inStream.read(bufIn);
System.out.println(new String(bufIn,0,num));
so.close();
inStream.close();
outStream.close();
fileIn.close();
}
}
4. URL 클래스: URL 은 하나의 통 일 된 자원 포 지 셔 닝 부 호 를 대표 합 니 다.
1. 구조 방법: URL (String spec) String 표시 형식 에 따라 URL 대상 을 만 듭 니 다. URL(String protocol, String host, String file) 지정 한 protocol 이름, host 이름, file 이름 에 따라 URL 을 만 듭 니 다. 2. 상용 방법: int getDefaultPort() 이 URL 과 연 결 된 프로 토 콜 의 기본 포트 번 호 를 가 져 옵 니 다. String getFile() 이 URL 의 파일 이름 을 가 져 옵 니 다. String getHost() 이 URL 의 호스트 이름 가 져 오기 (적용 된다 면). String getPath() 이 URL 의 경로 부분 을 가 져 옵 니 다. int getPort() 이 URL 의 포트 번 호 를 가 져 옵 니 다. String getProtocol() 이 URL 의 프로 토 콜 이름 을 가 져 옵 니 다. String getQuery() 이 URL 의 검색 부분 을 가 져 옵 니 다.URLConnection openConnection() URL 에 인 용 된 원 격 대상 의 연결 을 나타 내 는 URLConnection 대상 을 되 돌려 줍 니 다. InputStream openStream() 이 URL 의 연결 을 열 고 이 연결 에서 읽 을 InputStream 을 되 돌려 줍 니 다.6. URLConnection 류 는 응용 프로그램 과 URL 간 의 통신 링크 를 대표 합 니 다.1, 방법: String getHeaderField (String name) 지정 한 헤더 필드 의 값 을 되 돌려 줍 니 다. String getHeaderFieldKey(int n) n 번 째 헤드 필드 의 키 를 되 돌려 줍 니 다. Map
:
import java.net.*;
import java.io.*;
/*
URL URLConnection
*/
class HttpTest
{
public static void main(String[] args) throws Exception
{
URL url = new URL("http://127.0.0.1/index.html");
URLConnection u = url.openConnection();
InputStream webFile = u.getInputStream();
byte[] buf = new byte[1024];
int len = 0;
while ((len = webFile.read(buf)) != -1)
{
System.out.println(new String(buf, 0, len));
}
System.out.println(len);
webFile.close();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.