一、入门

要想学习socket通讯,首先得知道tcp/ip和udp连接,具体可参考浅谈TCP/IP 和 UDP的区别

二、示例

首先新建了一个java工程,包括两个部分,客户端SocketClient类和服务器端SocketServer类,服务器端SocketServer监听3756端口,客户端SocketClient往服务器端的3756端口发送一些文本信息,服务器端SocketServer接受完客户端的信息后,将客户端的信息打印出来。

服务器端SocketServer:

package GPS;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter; import java.net.ServerSocket;
import java.net.Socket; public class SocketServer {
public static void main(String [] args){
ServerSocket ss = null;
BufferedReader br = null;
Socket sk = null;
try{
System.out.println("create server socket....");
ss = new ServerSocket(3756);
System.out.println("wait for a connection....");
while(true) //服务器端一直监听这个端口,等待客户端的连接
{
sk = ss.accept();
System.out.println("get a socket object...");
br = new BufferedReader(new InputStreamReader(sk.getInputStream()));
String line = null;
while((line = br.readLine()) != null){
System.out.println(line); //服务器端打印客户端发送的信息数据
}
}
}
catch(Exception ex){
System.out.println(ex.getMessage());
}
finally{
try{
if(br != null){
br.close();
}
if(ss != null){
ss.close();
}
if(sk != null){
sk.close();
}
}
catch(Exception ex){
System.out.println(ex.getMessage());
}
}
} }

客户端SocketClient:

package GPS;
import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date; public class SocketClient {
public static void main(String [] args){
Socket sk = null;
PrintWriter pw = null;
try{
sk = new Socket("localhost",3756);
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sk.getOutputStream())));
while(true)
{
Thread.sleep(3000);
pw.println("I come from client"); //客户端往服务器端发送数据
pw.flush();
}
}
catch(Exception ex){
System.out.println(ex.getMessage());
}
finally{
try{
if(sk != null){
sk.close();
}
if(pw != null){
pw.close();
}
}
catch(Exception ex){
System.out.println(ex.getMessage());
}
}
} }

三、运行

首先启动服务器端SocketServer,然后运行客户端类SocketClient,服务端每隔3秒就会收到客户端发送来的信息:I come from client

create server socket....

wait for a connection....

get a socket object...

I come from client

这样就完成了一次socket连接请求,原理很简单,服务器端监听某一个端口,客户端向服务器端的指定端口请求连接,连接成功后,发送socket数据,服务器端接收并打印输出

java socket通讯(一) 入门示例的更多相关文章

  1. java socket通讯(二)处理多个客户端连接

    通过java socket通讯(一) 入门示例,就可以实现服务端和客户端的socket通讯,但是上一个例子只能实现一个服务端和一个客户端之间的通讯,如果有多个客户端连接服务端,则需要通过多线程技术来实 ...

  2. Java Socket通讯---网络基础

    java socket 通讯 参考慕课网:http://www.imooc.com/learn/161 一.网络基础知识 1.1 通讯示意图 1.2 TCP/IP协议 TCP/IP是世界上应用最为广泛 ...

  3. java socket通讯

    本来是打算验证java socket是不是单线程操作,也就是一次只能处理一个请求,处理完之后才能继续处理下一个请求.但是在其中又发现了许多问题,在编程的时候需要十分注意,今天就拿出来跟大家分享一下. ...

  4. Java socket字节流传输的示例

    服务端server端: package com.yuan.socket; import java.io.*; import java.net.ServerSocket; import java.net ...

  5. java socket 通讯

    (转)http://blog.csdn.net/xn4545945/article/details/8098646

  6. Socket网络通讯开发总结之:Java 与 C进行Socket通讯 + [备忘] Java和C之间的通讯

    Socket网络通讯开发总结之:Java 与 C进行Socket通讯 http://blog.sina.com.cn/s/blog_55934df80100i55l.html (2010-04-08 ...

  7. Socket网络通讯开发总结之:Java 与 C进行Socket通讯(转)

    先交待一下业务应用背景:服务端:移动交费系统:基于C语言的Unix系统客户端:增值服务系统:基于Java的软件系统通迅协议:采用TCP/IP协议,使用TCP以异步方式接入数据传输:基于Socket流的 ...

  8. 如何为可扩展系统进行Java Socket编程

    从简单I/O到异步非阻塞channel的Java Socket模型演变之旅 上世纪九十年代后期,我在一家在线视频游戏工资工作,在哪里我主要的工作就是编写Unix Unix Berkley Socket ...

  9. java socket 多线程通讯 使用mina作为服务端

    客户端代码不变,参照 http://www.cnblogs.com/Westfalen/p/6251473.html 服务端代码如下: import java.io.IOException; impo ...

随机推荐

  1. 021. asp.net两个DataSet数据集的合并

    protected void Page_Load(object sender, EventArgs e) { DataSet dsSource = new DataSet(); //创建源数据集 Da ...

  2. SqlServer中日期和时间数据类型及函数 【转】

    来源:http://blog.csdn.net/royalwzy/article/details/6446075 日期和时间数据类型 下表列出了 Transact-SQL 的日期和时间数据类型. 数据 ...

  3. 【Reporting Services 报表开发】— 矩阵的使用

    矩阵,相较于数据表示一维的数据,只能指定固定的数据列,来呈现动态的明细数据行,所以,它可以说是种二维的数据展现形式,让我们能够很容易地从数据行和数据集的交替中查看对应的汇总信息.像SQL Server ...

  4. MySQL【Update误操作】回滚(转)

    前言:      继上一篇MySQL[Delete误操作]回滚之后,现在介绍下Update回滚,操作数据库时候难免会因为“大意”而误操作,需要快速恢复的话通过备份来恢复是不太可能的,因为需要还原和bi ...

  5. JABX简单介绍

    主要引至http://suo.iteye.com/blog/1233458 一.简介 1.概念是什么:(Java Architecture for XML Binding) 是一个业界的标准,是一项可 ...

  6. MS CRM 2011的自定义和开发(11)——插件(plugin)开发(一)

    http://www.cnblogs.com/StoneGarden/archive/2012/02/02/2336147.html MS CRM 2011的自定义和开发(11)——插件(plugin ...

  7. [Hibernate] - Annotations - One To Many

    Hibernate使用Annotation的一对多: hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8&q ...

  8. css3之transform的应用

    一.利用transform实现图片额外显示 效果图如下 初始状态:

  9. bootstrap中datetimepicker只选择月份显示1899问题

    直接修改bootstrap-datetimepicker.js中 update: function () { var date, fromArgs = false; if (arguments &am ...

  10. 激活Maven profile的几种方式

    首先简单介绍下 Maven 的 profile 是什么.对于人来说,profile 是指人的肖像,轮廓,比如论坛里每个人注册了帐号后,可以设置自己的 profile,放上照片,介绍等等.对于 Mave ...