导航:首页 > 编程语言 > tcpserver代码

tcpserver代码

发布时间:2023-08-15 17:18:24

『壹』 在java中实现TCP协议编程中怎么传

在Java中实现TCP协议编程

ServerSocket:编写TCP网络服务程序,首先要用到java.net.ServerSocket类用以创建服务器Socket

构造方法:

ServerSocket(intport):创建绑定到特定端口的服务器套接字

ServerSocket(intport,intbacklog):利用指定的backlog(服务器忙时保持连接请求的等待客户数量),创建服务器套接字并将其绑定到指定的本地端口号。

ServerSocket(intport,intbacklog,InetAddressbindAddr):使用指定的端口、侦听backlog和要绑定到的本地IP地址创建服务器。

Socket:客户端要与服务器建立连接,必须先创建一个Socket对象

常用构造方法

Socket(Stringhost,intport):创建一个流套接字并将其连接到指定主机上的指定端口号。

Socket(InetAddressaddress,intport):创建一个流套接字并将其连接到指定IP地址的指定端口号。

服务器端程序调用ServerSocket类中的accept()方法等待客户端的连接请求,一旦accept()接收了客户端连接请求,该方法返回一个与该客户端建立了专线连接的Socket对象,不用程序去创建这个Socket对象。建立了连接的两个Socket是以IO流的方式进行数据交换的,Java提供了Socket类中的getInputStream()返回Socket的输入流对象,getOutputStream()返回Socket的输出流对象。

TCP服务器与TCP客户端间的数据的接受图示:

用TCP实现服务器与客户端的“聊天”:

实例代码

客户端:

packagecom.hbsi.net;

importjava.net.Socket;

importjava.io.*;

publicclassTcpClient{

publicstaticvoidmain(String[]args)throwsException{

//1.建立tcp客户端socket,要确定要连接的服务器ip,port

Sockets=newSocket("192.168.49.87",9009);

//获取键盘录入

BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));

//2.通过建立的socket,获取输出流对象

//数据输出给服务器端

OutputStreamout=s.getOutputStream();

BufferedWriterbwout=newBufferedWriter(newOutputStreamWriter(out));

//获取服务器端返回的数据

//读取服务器端发过来的信息InputStreamReader()

BufferedReaderbrin=newBufferedReader(newInputStreamReader(

s.getInputStream()));

Stringline=null;

while((line=br.readLine())!=null){

if(line.equals("over"))

break;

bwout.write(line);

bwout.newLine();

bwout.flush();

Stringstr=brin.readLine();

System.out.println("server:"+str);

}

br.close();

s.close();

}

}

服务器端:

packagecom.hbsi.net;

importjava.io.BufferedReader;

importjava.io.BufferedWriter;

importjava.io.InputStream;

importjava.io.InputStreamReader;

importjava.io.OutputStreamWriter;

importjava.net.ServerSocket;

importjava.net.Socket;

publicclassTcpServer{

publicstaticvoidmain(String[]args)throwsException{

//1.建立服务器socket

ServerSocketss=newServerSocket(9009);

//2.调用accept()

Sockets=ss.accept();

System.out.println(s.getInetAddress().getHostAddress()

+"...connection");

//读取客户的信息的输入流

InputStreamin=s.getInputStream();

BufferedReaderbrin=newBufferedReader(newInputStreamReader(in));

//向客户端发送信息输出流,服务端向客户端返回信息OutputStreamWriter()

BufferedWriterbrout=newBufferedWriter(newOutputStreamWriter(

s.getOutputStream())); Stringline=null;

while((line=brin.readLine())!=null){

System.out.println("client:"+line);

brout.write(line.toUpperCase());//服务器端收到信息后,将信息转为大写返回给客户端toUpperCase()

brout.newLine();

brout.flush();

}

s.close();

ss.close();

}

}

『贰』 求TCP/IP client server socket的JAVA代码

我这刚好有一个,给你参考一下:(分客户端和服务器两个小程序)

//客户端程序及聊天室的图形用户界面

import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

public class ChatTCPSocketJFrame extends JFrame implements ActionListener
{
private String name; //网名
private Socket socket; //TCP Socket对象
private JTextArea text_receiver; //显示对话内容的文本区
private JTextField text_sender; //输入发送内容的文本行
private JButton button_send,button_leave; //发送和离线按钮
private PrintWriter cout; //字符输出流对象

public ChatTCPSocketJFrame(String name, Socket socket) throws IOException//提供图形用户界面
{
super("聊天室 "+name+" "+InetAddress.getLocalHost()+" : "+socket.getLocalPort());
this.setBounds(320,240,400,240);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.text_receiver = new JTextArea();
this.text_receiver.setEditable(false); //文本区不可编辑
this.getContentPane().add(new JScrollPane(this.text_receiver));

JPanel panel = new JPanel();
this.getContentPane().add(panel,"South");
this.text_sender = new JTextField(16);
panel.add(this.text_sender);

button_send = new JButton("发送");
panel.add(button_send);
button_send.addActionListener(this);
button_leave = new JButton("离线");
panel.add(button_leave);
button_leave.addActionListener(this);
this.setVisible(true);

this.name = name;
this.socket = socket;
this.cout = new PrintWriter(socket.getOutputStream(),true);//获得Socket对象的输出流,立即flush
this.cout.println(name); //发送自己网名给对方

BufferedReader cin=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//获得Socket对象的输入流,创建字符输入流
String aline=cin.readLine(); //接收到对方网名
text_receiver.append("连接"+aline+"成功"+"\r\n"); //显示对方发来的内容
aline= cin.readLine();
while (aline!=null && !aline.equals("bye")) //从输入流接收对方发来的字符串
{ //"bye"是约定的离线信息
text_receiver.append(aline+"\r\n"); //显示对方发来的内容
aline= cin.readLine();
}
cin.close();
cout.close();
socket.close(); //关闭Socket连接
button_send.setEnabled(false);
button_leave.setEnabled(false);
}

public ChatTCPSocketJFrame(String name, String host, int port) throws IOException //客户端
{
this(name, new Socket(host, port)); //客户端向指定主机的端口发出TCP连接请求
}

public void actionPerformed(ActionEvent e)
{
if (e.getSource()==button_send) //发送按钮
{
this.cout.println(name+" 说:"+text_sender.getText()); //通过流发送给对方
text_receiver.append("我说:"+text_sender.getText()+"\n");
text_sender.setText("");
}

if (e.getSource()==button_leave) //离线
{
text_receiver.append("我离线\n");
this.cout.println(name+"离线\n"+"bye"); //发送给对方离线约定
button_send.setEnabled(false);
button_leave.setEnabled(false);
}
}

public static void main(String args[]) throws IOException
{
new ChatTCPSocketJFrame("小蜜蜂", "127.0.0.1", 2001);
}
}

//服务端程序

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

public class ChatTCPServer
{
public ChatTCPServer(int port, String name) throws IOException //约定端口、网名
{ //本机IP地址和指定端口构成服务端的Socket
ServerSocket server = new ServerSocket(port); //ServerSocket提供TCP连接服务
Socket client = server.accept(); //等待接收客户端的连接申请
new ChatTCPSocketJFrame(name,client); //服务端的聊天室,图形用户界面同客户端
server.close();
}

public static void main(String args[]) throws IOException
{
new ChatTCPServer(2001, "花仙子"); //启动服务端,约定端口,指定网名
}
}

『叁』 急缺一个vb网络通信代码。基于tcp/ip, 要简单明了,一定要加注解。

TCP连接初步
如果应用程序要使用TCP协议,那么首先必须决定应用程序是服务器还是客户端。
如果要创建一个服务器端,那么应用程序需要“监听”指定的端口。当客户端提出
连接请求时,服务器端能够接受请求并建立连接。在连接建立之后,客户端与服务
器端可以自由地互相通讯。

下列步骤创建一个非常简单的服务器:

要创建一个TCP服务器,请按照以下步骤执行:

创建新的StandardEXE工程。


将缺省窗体的名称改为frmServer。


将窗体的标题改为“TCP服务器”。


在窗体中放入一个Winsock控件,并将它的名字改为tcpServer。


在窗体上添加两个TextBox控件。将第一个命名为txtSendData,第二个为txtOutput。


为窗体添加如下的代码。
PrivateSubForm_Load()
'将LocalPort属性设置为一个整数。
'然后调用Listen方法。
tcpServer.LocalPort=1001
tcpServer.Listen
frmClient.Show'显示客户端的窗体。
EndSub

PrivateSubtcpServer_ConnectionRequest_
(ByValrequestIDAsLong)
'检查控件的State属性是否为关闭的。
'如果不是,
'在接受新的连接之前先关闭此连接。
IftcpServer.State<>sckClosedThen_
tcpServer.Close
'接受具有requestID参数的
'连接。
tcpServer.AcceptrequestID
EndSub

PrivateSubtxtSendData_Change()
'名为txtSendData的TextBox控件中
'包含了要发送的数据。当用户往文本框中
'键入数据时,使用SendData方法
'发送输入的字符串。
tcpServer.SendDatatxtSendData.Text
EndSub

PrivateSubtcpServer_DataArrival_
(ByValbytesTotalAsLong)
'为进入的数据声明一个变量。
'调用GetData方法,并将数据赋予名为txtOutput
'的TextBox的Text属性。
DimstrDataAsString
tcpServer.GetDatastrData
txtOutput.Text=strData
EndSub

上面的步骤创建了一个简单的服务器应用程序。为了使它能够工作,
还必须为它创建一个客户端的应用程序。

要创建TCP客户端,请按照以下步骤执行:

在工程中添加一个新的窗体,将其命名为frmClient。


将窗体的标题改为“TCPClient”。


在窗体中添加一个Winsock控件,并将其命名为tcpClient。


在frmClient中添加两个TextBox控件。将第一个命名为txtSend,第二个为txtOutput。


在窗体上放一个CommandButton控件,并将其命名为cmdConnect。


将CommandButton控件的标题改为Connect。


在窗体中添加如下的代码。
重点必须将RemoteHost属性值修改为您的计算机的名字。

PrivateSubForm_Load()
'Winsock控件的名字为tcpClient。
'注意:要指定远程主机,可以使用
'IP地址(例如:"121.111.1.1"),也可以使用
'计算机的“好听的名字”如下所示。
tcpClient.RemoteHost="RemoteComputerName"
tcpClient.RemotePort=1001
EndSub

PrivateSubcmdConnect_Click()
'调用Connect方法,初始化连接。
tcpClient.Connect
EndSub

PrivateSubtxtSendData_Change()
tcpClient.SendDatatxtSend.Text
EndSub

PrivateSubtcpClient_DataArrival_
(ByValbytesTotalAsLong)
DimstrDataAsString
tcpClient.GetDatastrData
txtOutput.Text=strData
EndSub

上面的代码创建了一个简单的客户/服务器模式的应用程序。我们可以将两者都运行起来:
运行工程,然后单击“连接”。在两个窗体之一的txtSendData文本框中键入文本,可
以看到同样的文字将出现在另一个窗体的txtOutput文本框中。

阅读全文

与tcpserver代码相关的资料

热点内容
浙里办app如何更换手机号码 浏览:244
电子资料文件有哪些 浏览:241
猥琐猫表情教程 浏览:599
android音频文件格式 浏览:458
漫画脸app哪里可以下载 浏览:959
购买欢乐升级欢乐豆 浏览:282
学习智能机器人用什么编程最好 浏览:655
苹果手机如何管控app 浏览:633
mn文件夹 浏览:590
安卓平板通用刷机包下载 浏览:751
安卓获取内部存储路径 浏览:880
写代码两台显示器 浏览:327
unitypackage压缩文件 浏览:493
奕心安卓 浏览:563
使用土地的有关证明文件包含哪些 浏览:493
数据标注哪里可以接 浏览:482
在家自学编程下什么学 浏览:705
最近很火的app软件是什么软件 浏览:862
ai文字工具 浏览:157
兰博玩游戏路径怎么选择正确文件 浏览:972

友情链接