您的位置:首页 > 理论基础 > 计算机网络

网络_2_2010_03_13

2010-03-13 19:33 295 查看
Socket TCP的连接

两个java应用程序可通过一个双向的网络通信连接实现数据交换,这个双向链路的一端称为一个Socket
Socket通常用来实现client—server连接
Java.net包中定义的两个类Socket和ServerSocket,分别用来实现双向连接的client和server端
建立连接时所需的寻址信息为远程计算机的IP地址和端口号(Port number)

区分不同应用程序,两个字节,最多可有65536个应用程序
自己用的1024以后的端口号

端口号:
TCP端口
UDP端口
每一个是65536个端口

先写|Server在写Client
启动也先启Server在启Client
TCP Socket通信模型

代码清单:

---------------------------------------------------------------------------------------------------------------------------------------------------------import java.net.*;
import java.io.*;

public class TCPServer{
public static void main(String [] args)throws Exception{
ServerSocket ss = new ServerSocket(6666);
while(true){
Socket s = ss.accept();//阻塞式的
System.out.println("a client connect");
DataInputStream dis = new DataInputStream(s.getInputStream());
Thread.sleep(30000);
System.out.println(dis.readUTF());//阻塞式的
dis.close();
s.close();
//System.out.println("my name is server");
}
}
}

-------------------------------------------------------------------------------------------------------------------------------------------------------------

import java.net.*;
import java.io.*;

public class TCPClient{
public static void main(String [] args)throws Exception{
Socket s = new Socket("127.0.0.1",6666);
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("hello server!");
dos.flush();
dos.close();
s.close();
}
}

------------------------------------------------------------------------------------------------------------------------------------------------------------

import java.net.*;
import java.io.*;

public class TestServer{
public static void main(String [] args){
try{
ServerSocket s = new ServerSocket(8888);
while(true){
Socket s1 = s.accept();
OutputStream os = s1.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("hello,"+s1.getInetAddress()+ //得到客户端的信息
"port# "+s1.getPort()+"bye-bye");
dos.close();
s1.close();
}
}catch(IOException e){
e.printStackTrace();
System.out.println("程序运行出错;"+e);
}
}
}

--------------------------------------------------------------------------------------------------------------------------------------------------------------

import java.net.*;
import java.io.*;

public class TestClient{
public static void main(String [] args){
try{
Socket s1 = new Socket("127.0.0.1",8888);
InputStream is = s1.getInputStream();
DataInputStream dis = new DataInputStream(is);
System.out.println(dis.readUTF());
dis.close();
s1.close();
}catch(ConnectException connExc){
connExc.printStackTrace();
System.out.println("服务器连接失败!");
}catch(IOException e){
e.printStackTrace();
}
}
}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

import java.io.*;
import java.net.*;

public class TestSocketServer{
public static void main(String [] args){
InputStream in = null;
OutputStream out = null;
try{
ServerSocket ss = new ServerSocket(5888);
Socket socket = ss.accept();
in = socket.getInputStream();
out = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(out);
DataInputStream dis = new DataInputStream(in);
String s = null;
if((s=dis.readUTF())!=null){
System.out.println(s);
System.out.println("from: "+socket.getInetAddress());
System.out.println("Port: "+socket.getPort());
}
dos.writeUTF("hi,hello");
dis.close();
dos.close();
socket.close();
}catch(IOException e){
e.printStackTrace();
}
}
}

--------------------------------------------------------------------------------------------------------------------------------------------------------------

import java.io.*;
import java.net.*;

public class TestSocketClient{
public static void main(String [] args){
InputStream is = null;
OutputStream os = null;
try{
Socket socket = new Socket("localhost",5888);
is = socket.getInputStream();
os = socket.getOutputStream();
DataInputStream dis = new DataInputStream(is);
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("hey");
String s = null;
if((s=dis.readUTF())!=null){
System.out.println(s);
}
dos.close();
dis.close();
socket.close();
}catch(UnknownHostException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
}

---------------------------------------------------------------------------------------------------------------------------------------------------------------

import java.io.*;
import java.net.*;

public class TestSocketClient{
public static void main(String [] args){
InputStream is = null;
OutputStream os = null;
try{
Socket socket = new Socket("localhost",5888);
is = socket.getInputStream();
os = socket.getOutputStream();
DataInputStream dis = new DataInputStream(is);
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("hey");
String s = null;
if((s=dis.readUTF())!=null){
System.out.println(s);
}
dos.close();
dis.close();
socket.close();
}catch(UnknownHostException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: