Java网络编程之单线程Client-Server

最近在写这个计算机网络,然后要求我们自己去写一个服务器,一开始一头雾水!不过后来一查资料想通了,哈哈~然后自己就啪啪啪敲出来了。好啦,闲言少叙,直接看代码!

Client.java

package exercise01;
import java.io.*;
import java.net.*;

public class Client {
    private String hostname;
    private int port;
    Socket socket = null;

    public Client(String hostname, int port){
    	//constructor of the Client class
    	this.hostname = hostname;
    	this.port = port;
    }

    public void connect() throws UnknownHostException, IOException{
    	System.out.println("Attempting connect to "+ hostname +":"+port);
    	socket = new Socket(hostname,port);
    	System.out.println("Connection established!");
    }

    public void readResponse() throws IOException{
    	String userInput;
    	BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    	System.out.println("Response from the server:");
    	while((userInput = reader.readLine() )!= null ){
    		System.out.println(userInput);
    	}
    }

    public static void main(String[] argv){
    	//create an object for the current class Client
    	Client client = new Client("localhost",8181);
    	try{
    		//trying to establish a connection to the server
    		client.connect();

    		//if connection succeed, return the input contents
    		client.readResponse();

    	}catch(UnknownHostException ukhe){
    		//if the host not found
    		System.err.println("Host unknown! Connection can not be established!");
    	}catch(IOException ioe){
    		//if the server doesn't work
    		System.err.println("Connection can not be established! The server may not be on! Check the error message! "+ioe.getMessage());
    	}
    }

}

Server.java

package exercise01;

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

public class Server {
	private ServerSocket serverSocket;
	private int port;

	public Server(int port){
		this.port = port;
	}

	public void startServer() throws IOException{
		System.out.println("Starting the socket server at the port: " + port);
		serverSocket = new ServerSocket(port);

		//Listen the clients. Block until one connects
		System.out.println("Waiting for clients...");
		Socket client = serverSocket.accept();

		//A client has connected and send the welcome message
		sendMessage(client);
	}

	//send the display message
	private void sendMessage(Socket client) throws IOException {
		BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
		writer.write("Hello. You are connected to a Simple Socket Server.");
		writer.flush();
		writer.close();
	}

	/**
	 * Create a server object and start the server
	 *
	 * @param argv
	 */
	public static void main(String[] argv){
		int port = 8181;

		//start the server
		try{
			Server server = new Server(port);
			server.startServer();
		}catch(IOException ioe){
			ioe.printStackTrace();
		}
	}
}

自己将包名改一下就可以跑了。

时间: 2024-11-10 00:16:35

Java网络编程之单线程Client-Server的相关文章

java网络编程socket\server\TCP笔记(转)

java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04|  分类: Socket |  标签:java  |举报|字号 订阅 1 TCP的开销 a  连接协商三次握手,c->syn->s,s->syn ack->c, c->ack->s b  关闭协商四次握手,c->fin->s, s->ack-c,s->fin->c,c->ack->s c  保持数据有序,响应确认等计算开销 d

java网络编程serversocket

转载:http://www.blogjava.net/landon/archive/2013/07/24/401911.html Java网络编程精解笔记3:ServerSocket详解ServerSocket用法详解 1.C/S模式中,Server需要创建特定端口的ServerSocket.->其负责接收client连接请求. 2.线程池->包括一个工作队列和若干工作线程->工作线程不断的从工作队列中取出任务并执行.-->java.util.concurrent->线程池

用java网络编程中的TCP方式上传文本文件及出现的小问题

自己今天刚学java网络编程中的TCP传输,要用TCP传输文件时,自己也是遇到了一些问题,抽空把它整理了一下,供自己以后参考使用. 首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文件给服务端,服务端接收数据并显示“上传成功”给客户端. 客户端: 1 import java.io.BufferedReader; 2 import java.io.FileReader; 3 import java.io.IOException; 4 import java.io.InputStr

Java网络编程基础(六)— 基于TCP的NIO简单聊天系统

在Java网络编程基础(四)中提到了基于Socket的TCP/IP简单聊天系统实现了一个多客户端之间护法消息的简单聊天系统.其服务端采用了多线程来处理多个客户端的消息发送,并转发给目的用户.但是由于它是基于Socket的,因此是阻塞的. 本节我们将通过SocketChannel和ServerSocketChannel来实现同样的功能. 1.客户端输入消息的格式 username:msg    username表示要发送的的用户名,msg为发送内容,以冒号分割 2.实现思路 实现思路与Java网络

java网络编程socket解析

转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在C/S通信模式中,client需要主动创建于server连接的Socket(套接字).服务器端收到了客户端的连接请求,也会创建与客户连接的Socket.Socket可看做是通信两端的收发器.server与client都通过Socket来收发数据. 1.构造Socket 1.Socket() 2.So

实验五 Java网络编程及安全

北京电子科技学院 实      验      报      告 课程:移动平台应用开发实践  班级:201592   姓名:曾俊宏  学号:20159210 成绩:___________  指导老师:娄嘉鹏    实验日期 :2015.10.25 实验名称:                          Java 网络编程及安全 实验内容:      1.掌握 Socket程序的编写    2.掌握密码技术的使用    3.设计安全传输系统 我的实验搭档是蔡斌思    http://www.

Java网络编程基础【转】

网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的.首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛,很简单的事情啊!其实初学者如果入门网络编程的话也可以做到这么简单! 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.

Java网络编程【Socket服务端和客户端】

Socket 编程大家都不陌生,Java 学习中必学的部分,也是 Java网络编程核心内容之一.Java 网络编程又包括 TCP.UDP,URL 等模块.TCP 对应 Socket模块,UDP 对应 DatagramPacket 模块.URL 对应 URL 模块.其中 TCP 和 UDP 是网络传输协议,TCP 是数据流传输协议,UDP 是数据包传输协议.两者之间的异同就不在这里说了,推荐一本入门书籍 <TCPIP入门经典>.我们开始 Socket 服务端和客户端编程吧. 一.Socket 服

Java网络编程(一)

Java网络编程: 1.1: 网络编程:对于我这个“研究不深”的网络菜鸟来说,我觉得网络编程就是实现计算机与计算机之间通信的编程.写些能够实现计算机与计算机之间的通信就行了(目前来说). 1.2:一台计算机跟另外计算机通讯. 计算机与计算机通讯的三大要素: 1:ip地址---电脑 1.1:作用:唯一标识一台计算机. 回环地址:127.0.0.1==主机:localhost 主机地址作用:测试网卡是否正常. 2:找到相应的应用程序----端口号 端口号-----具有网络功能的应用程序的标识号,没有