socket编程示例(多线程)

客户端代码如下:

import java.io.*;
import java.net.*;
import java.util.Scanner;

public class SimpleChatClient {
	BufferedReader reader;
	PrintWriter writer;
	Socket sock;

	public void go(){
		System.out.println("客户端启动!");
		setUpNetworking();
		//发送数据到服务器
		Scanner scanner=new Scanner(System.in);
		String sendString=scanner.nextLine();
		while(sendString!=null&&!sendString.equals("byebye")){
			writer.println(sendString);
			writer.flush();
			sendString=scanner.nextLine();
		}
		scanner.close();
		System.out.println("客户端退出!");
	}

	public void setUpNetworking(){
		try {
			sock=new Socket("127.0.0.1",5000);
			InputStreamReader streamReader=new InputStreamReader(sock.getInputStream());
			reader=new BufferedReader(streamReader);
			writer=new PrintWriter(sock.getOutputStream());
			System.out.println("networking established");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SimpleChatClient client=new SimpleChatClient();
		client.go();
	}

}

服务器端代码如下:

import java.io.*;
import java.net.*;
public class SimpleChatServer {
	//内部类
	public class ClientHandler implements Runnable{
		BufferedReader reader;
		Socket sock;

		public ClientHandler(Socket clientSocket){
			sock=clientSocket;
			InputStreamReader isReader;
			try {
				isReader = new InputStreamReader(sock.getInputStream());
				reader=new BufferedReader(isReader);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
		@Override
		public void run() {
			// TODO Auto-generated method stub
			String messageString;
			try {
				while((messageString=reader.readLine())!=null){
					System.out.println("read "+messageString);
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
					System.out.println("有一个连接断开");
			}
		}

	}
	public void go(){
		System.out.println("服务器启动成功!");
		ServerSocket serverSock;
		try {
			serverSock = new ServerSocket(5000);
			while(true){
				Socket clientSocket=serverSock.accept();
				Thread thread=new Thread(new ClientHandler(clientSocket));
				thread.start();
				System.out.println("got a connection!");
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new SimpleChatServer().go();
	}

}
时间: 2024-10-10 01:25:17

socket编程示例(多线程)的相关文章

Windows Socket编程示例-TCP示例程序

前面一部分是介绍,后面有示例 1.网络中进程之间如何通信? 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们解决了这个问题,网络层的"ip地址"可以唯一标识网络中的主机,而传输层的"协议+端口"可以唯一标识主机中的应用程序(进程).这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互. 使用TCP

Android应用开发提高篇(4)-----Socket编程(多线程、双向通信)(转载)

转自:http://www.cnblogs.com/lknlfy/archive/2012/03/04/2379628.html 一.概述 关于Socket编程的基本方法在基础篇里已经讲过,今天把它给完善了.加入了多线程,这样UI线程就不会被阻塞:实现了客户端和服务器的双向通信,只要客户端发起了连接并成功连接后那么两者就可以随意进行通信了. 二.实现 在之前的工程基础上进行修改就可以了. MyClient工程的main.xml文件不用修改,只需要修改MyClientActivity.java文件

Linux socket编程示例(最简单的TCP和UDP两个例子)

一.socket编程 网络功能是Uinux/Linux的一个重要特点,有着悠久的历史,因此有一个非常固定的编程套路. 基于TCP的网络编程: 基于连接, 在交互过程中, 服务器和客户端要保持连接, 不能断开.重发一切出错数据.数据验证, 保证数据的正确性.完整性和顺序性, 缺点是消耗的资源比较大. 基于UDP的网络编程: 无连接协议, 在网络交互过程中不保持连接, 只需要在发送数据时连接一下, 不重发.验证数据.优点是资源消耗少, 数据的可靠性完整性 顺序性得不到保证. 二.编程步骤: 服务器:

多线程Java Socket编程示例(转)

这篇做为学习孙卫琴<<Java网络编程精解>>的学习笔记吧.其中采用Java 5的ExecutorService来进行线程池的方式实现多线程,模拟客户端多用户向同一服务器端发送请求. 1.服务端 package sterning; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import

多线程Java Socket编程示例

package org.merit.test.socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; public class Hand

Socket 编程示例(二)

利用晚上这点闲暇时间,写了一个Socket通信的小实例,该实例包含服务器端和客户端.其基本工作流程是:当服务器启动服务以后,客户端进行连接,如果连接成功,则用户可以在发送消息框中输入待发送的消息,然后点击“Send”按钮后向服务器发送消息,服务器在收到消息后立即向该客户端发送接收成功消息.其基本效果如图1.1和图1.2所示(注:下面两幅图于次日补上):图1.1  服务器运行效果图图1.2  客户端运行效果图 现将服务器和客户端部分代码贴出来,由于代码较简单,基本没有注释,并在此特别说明,该实例仅

基于UDP协议的socket编程示例

客户端 import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; public class LoginClient { public static void main(Str

linux socket编程示例

#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <signal.h> #include <unistd.h> #include <stdlib.h> #include <assert.h> #include <stdio.h> #include <string.h> static bool

Python学习笔记——进阶篇【第八周】———Socket编程进阶&amp;多线程、多进程

本节内容: 异常处理 Socket语法及相关 SocketServer实现多并发 进程.线程介绍 threading实例 线程锁.GIL.Event.信号量 生产者消费者模型 红绿灯.吃包子实例 multiprocess实例 进程间通讯 队列Queue 原文目录链接:http://www.cnblogs.com/alex3714/articles/5227251.html 作业1:用socketserver继续完善FTP作业 作业2:开发一个批量主机管理工具 需求: 可以对机器进行分组 可以对指