java网络编程之socket编程笔记

      网络编程也就是使得程序可以在网络上进行交互操作,使其具有网络功能,现在大部分程序开始转变为网络化,实时化。我们常用的QQ,等通讯工具,现在文字工具也开始网络化,如金山的wps。网络化的好处我就不多说了,你懂的!

开始正题吧:

由于刚刚学习网络编程,暂时是用socket来进行的。不知道大家对端口号这个东西了解不?如果不了解,可以去查看计算机网络这本书,讲得很详细。这里稍微讲一下,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等,小于1024的端口号一般作为常用的服务器端口,大多数TCP/IP实现给临时端口号分配1024---5000之间的端口号。大于5000的端口号是为其他服务器预留的。如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。

好吧,了解了端口就用它来干点事吧!

首先我们把服务器端的程序做好,代码暂时先贴出来

package Netsever;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.*;
import java.nio.Buffer;
public class Netsever1 {

	 Netsever1()
	 {
		 try {
			ServerSocket ss=new ServerSocket(8888);//建一个端口号为8888的服务器socket 
			
			Socket s=new Socket();
			System.out.println("等待连接");
			s=ss.accept();//让他处于监听的状态,监听来来连接的程序
			System.out.println("连接成功");
			InputStreamReader isr=new InputStreamReader(s.getInputStream());//获取并接受socket中的流
			BufferedReader br=new BufferedReader(isr);
		String str=	br.readLine();//读取数据
		System.out.println(str);
		PrintWriter pw=new PrintWriter(s.getOutputStream(),true);//创建一个输出的流
		pw.println("你好呀!客户端。。。。");
//输出我们想要输出的		
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 
	 }
	public static void main(String[] args) {
		// TODO Auto-generated method stub
Netsever1 ns=new Netsever1();
	}

}

他的初始状态是:


接下来把客户端写好吧!不能让他一直等着。

 

package Client;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.*;
public class Netclient {

 Netclient()
 {
  try {
   Socket s=new Socket("192.168.1.4",8888);//ip地址是我自己的,因为服务器也在我机器上,如果是别的机器,就写别的IP
   System.out.println("连接");
   //输出流
   PrintWriter pw=new PrintWriter(s.getOutputStream(),true);//后面跟服务器端是差不多的。
   pw.println("hello ,我是小牛毛");
   InputStreamReader isr=new InputStreamReader(s.getInputStream());
   BufferedReader br=new BufferedReader(isr);
   String str= br.readLine();
   System.out.println(str);
  } catch (UnknownHostException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Netclient nc=new Netclient();
 }

}

客户端暂时就写着么多了,下面我们就运行一下,看他是否能够连接上:


看来连接是成功了,接收到了服务器端发来的信息。

下面再看看服务器端发生了什么情况:

服务器端也收到了客户发来的消息。

看来是ok了。

下面是我做的一个小练习,山寨版的QQ.代码就不贴了,贴个图看看吧!

 

 

 

下面是他们的聊天,很火热哦!

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值