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

JAVA学习笔记(网络编程 之 socket)

2013-05-16 21:50 771 查看
一共三个文件;

如下:



1.MultiTalkServer

package socket;

import java.io.*;
import java.net.*;
import socc.ServerThread;;
public class MultiTalkServer {
static int clientnum = 0;
static int part = 4700;
public static void main(String[] args) throws IOException {
System.out.println("服务端开始执行!");
ServerSocket serverSocket = null;
boolean listening = true;
try{
serverSocket = new ServerSocket(part);
}catch (IOException e){
System.out.println("coutld not listen on part :" + part);
System.exit(-1);
}
while(listening){
new ServerThread(serverSocket.accept(),clientnum).run();
clientnum ++;
}
serverSocket.close();
}
}


2.TalkClient

package socket;
import java.io.*;
import java.net.*;
public class TalkClient {
public static void main(String[] args) {
System.out.println("客户端开始执行!");
try{
//监听ip为..的端口为4700的
Socket socket = new Socket("122.207.221.46",4700);
BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
// 从socket流得到消息创建对象,有发送到服务端的作用
PrintWriter os = new PrintWriter(socket.getOutputStream());
//从socket流得到消息创建对象,有从服务端得到消息的作用
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String readline;
readline =  sin.readLine();
while(!readline.equals("byebye")){
os.println(readline);
os.flush();
System.out.println("Client :" + readline);
System.out.println("Server :" + is.readLine() + "(此消息来自服务端)");  //输出从服务端发来的消息
readline = sin.readLine();
}
os.close();
is.close();
socket.close();
}catch (Exception e){
System.out.println("Error :" + e);
}
}
}


3.ServerThread

package socc;

import java.io.*;
import java.net.*;
public class ServerThread {
Socket socket = null;
int clientnum;
public ServerThread(Socket socket, int num){
this.socket = socket;
this.clientnum = num + 1;
}
public void run(){
try{
System.out.println("进程开始执行!");
String line;
//从socket对象得到输入流,并创建BufferedReader对象,这个对象的作用是从客户端得到消息
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//从socket对象得到输出流,并创建PrintWriter对象,这个对象的作用是从服务端发送消息到客户端
PrintWriter os = new PrintWriter(socket.getOutputStream());
//创建一个从控制台得到输入流的流
BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("client :" + clientnum + is.readLine() + "(来自客户端)");//从客户端得到消息并输出
line = sin.readLine();
while(! line.equals("byebye")){
System.out.println("一个新的进程开始执行!");
os.println(line);
os.flush();
System.out.println("Server :" + line);
System.out.println("client :" + clientnum + is.readLine());  //从客户端得到消息并输出
line = sin.readLine();
}
os.close();
is.close();
sin.close();
socket.close();
}catch (Exception e){
System.out.println("Error: " + e);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: